通过lapply删除()不起作用

时间:2016-05-27 13:18:07

标签: r lapply

我想从内存中删除一些data.frames。这适用于

remove(ttest,inherits=T) 

现在我不想为我使用的每一个数据写出来,所以我考虑使用lapply:

lapply(tablenames,remove)

其中tablenames只是一个包含表名的列表:

tablenames

[[1]]
[1] ttest
Levels: testsheet ttest ttest2

[[2]]
[1] testsheet
Levels: testsheet ttest ttest2

[[3]]
[1] ttest2
Levels: testsheet ttest ttest2

我总是收到错误:

  

FUN中的错误(X [[i]],...):... muss Namen oder Zeichenketten enthalten

转换为“必须包含名称或字符串”。

接下来我尝试将remove函数包装到另一个函数中,同时给它继承= T参数:

clean <- function(table) {rm(table, inherits=T)}
> lapply(tablenames,clean)
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

桌子还在那里。我能做什么?谢谢。

2 个答案:

答案 0 :(得分:4)

你不需要做任何复杂的事情。如果tablenames是要删除的对象名称的字符向量,则

rm(list = tablenames, inherits = TRUE)

会做我认为你想做的事。

答案 1 :(得分:1)

我们应该使用lapply

,而不是使用unlist
rm(list = unlist(tablenames))