R有条件地删除数据帧

时间:2019-03-13 00:41:39

标签: r dataframe

我已经将xlsx文件导入R,并将每个工作表加载到单独的数据框中。由于这是一本很大的工作簿,带有多余的工作表,因此我需要有条件地从全局环境中删除一些工作簿。最终目标是仅保留将用于自动进行时间序列分析的工作表。

我想删除所有不符合后缀标准的数据框。我当前运行但没有执行任何操作的当前代码是:

for(i in ls()) {
 if(substring(ls()[i], regexpr(pattern = "_", mget(ls()[i]))+1) != "E10" |
  substring(ls()[i], regexpr(pattern = "_", mget(ls()[i]))+1) != "U91" |
  substring(ls()[i], regexpr(pattern = "_", mget(ls()[i]))+1) != "V95" |
  substring(ls()[i], regexpr(pattern = "_", mget(ls()[i]))+1) != "V98") {
    remove(ls()[i])

   }
}

这还会处理没有后缀示例“ Sheet127”的数据帧吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

分别使用rm()和ls()的list和pattern参数。

这应该有效。

rm(list = ls(pattern = '^.*(E10|U91|V95|V98)$'))

答案 1 :(得分:0)

使用@Patrick Rutz答案的偏差解决:

rm(list = ls(pattern = '^.*([^E10|U91|V95|V98])$'))