Regex in R: match everything but not "some string" -
this question has answer here:
- how can remove objects 1 workspace in r? 13 answers
- remove punctuation except apostrophes in r 4 answers
the answers question explain how match string not containing word.
the problem (for me) solutions given don't work in r.
often create data.frame() existing vectors , want clean workspace. example, if workspace contains:
> ls() [1] "a" "b" "dat" "v" > and want retain dat, i'd have clean with:
> rm(list=ls(pattern="a")) > rm(list=ls(pattern="b")) > rm(list=ls(pattern="v")) > ls() [1] "dat" > (where a, b, , v examples of large number of complicated names my.first.vector not easy match rm(list=ls(pattern="[abv]"))).
it convenient (for me) tell rm() remove except dat, problem solution given in linked q&a not work:
> rm(list=ls(pattern="^((?!dat).)*$")) error in grep(pattern, all.names, value = true) : invalid regular expression '^((?!dat).)*$', reason 'invalid regexp' > so how can match except dat in r?
this remove objects except dat . (use ls argument all.names = true if want remove objects names begin dot well.)
rm( list = setdiff( ls(), "dat" ) ) replace "dat" vector of names, e.g. c("dat", "some.other.object"), if want retain several objects; or, if several objects can readily matched regular expression try removes objects names not start "dat":
rm( list = setdiff( ls(), ls( pattern = "^dat" ) ) ) another approach save data, save("dat", file = "dat.rdata"), exit r, start new r session , load data, 1oad("dat.rdata"). note this method of restarting r.
Comments
Post a Comment