【发布时间】:2013-07-01 11:06:44
【问题描述】:
另一个问题的答案解释how to match a string not containing a word。
问题(对我来说)是给出的解决方案在 R 中不起作用。
我经常从现有向量创建一个data.frame() 并想清理我的工作区。例如,如果我的工作区包含:
> ls()
[1] "A" "B" "dat" "V"
>
而我只想保留dat,我必须使用以下命令对其进行清理:
> rm(list=ls(pattern="A"))
> rm(list=ls(pattern="B"))
> rm(list=ls(pattern="V"))
> ls()
[1] "dat"
>
(其中A、B和V只是my.first.vector等大量复杂名称的示例,这些名称不易与rm(list=ls(pattern="[ABV]"))匹配)。
告诉rm() 删除除dat 之外的所有内容是最方便的(对我而言),但问题是链接问答中给出的解决方案不起作用:
> rm(list=ls(pattern="^((?!dat).)*$"))
Error in grep(pattern, all.names, value = TRUE) :
invalid regular expression '^((?!dat).)*$', reason 'Invalid regexp'
>
那么 如何 我如何匹配 R 中除了 dat 之外的所有内容?
【问题讨论】:
-
你试过
rm(list=ls()[ls()!="dat"])吗? -
@Ferdinand.kraft 谢谢!没想到索引
ls()返回的对象。