以某种模式从全局环境中删除文件

sta*_*oob 1 r

我的全局环境中有这些文件:

 x <- sapply(sapply(ls(), get), is.data.frame)
 n = names(x)[(x==TRUE)] 

 n

 [1] "sample_1"  "sample_10" "sample_2"  "sample_3"  "sample_4"  "sample_5"  "sample_6"  "sample_7"  "sample_8"  "sample_9"  "table_i"  
Run Code Online (Sandbox Code Playgroud)

我想删除所有以“samp”开头的文件。我找到了可以执行此操作的代码(如何从工作区中仅清除一些特定对象?):

rm(list = apropos("samp_"))
Run Code Online (Sandbox Code Playgroud)

现在,我想学习如何用不同的方式做同样的事情。我找到了另一种方法来查找全局环境中以“samp”开头的所有文件:

 nn = grep("samp", n, value = TRUE)  

 [1] "sample_1"  "sample_10" "sample_2"  "sample_3"  "sample_4"  "sample_5"  "sample_6"  "sample_7"  "sample_8"  "sample_9" 
Run Code Online (Sandbox Code Playgroud)

然后,我尝试删除这些文件:

for (file in nn){
    nn[i] <- NULL
  }

do.call(file.remove, list(nn))
Run Code Online (Sandbox Code Playgroud)
  • 我想我在这里遗漏了一些东西 - 有人可以告诉我如何纠正这个问题吗?

谢谢你!

And*_*own 5

您可以使用pattern删除函数的内部:

rm(list = ls(pattern = "^samp"))
Run Code Online (Sandbox Code Playgroud)

或者使用grep

rm(list = grep("^samp", ls(), value = TRUE))
Run Code Online (Sandbox Code Playgroud)