通过 lapply 删除()不起作用

remove() via lapply does not work

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

remove(ttest,inherits=T) 

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

lapply(tablenames,remove)

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

tablenames

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

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

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

我总是得到一个错误:

Error in FUN(X[[i]], ...) : ... muss Namen oder Zeichenketten enthalten

转换为 "must contain name or string"。

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

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

[[2]]
NULL

[[3]]
NULL

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

我们应该使用 unlist:

而不是 lapply
rm(list = unlist(tablenames))

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

rm(list = tablenames, inherits = TRUE)

会做我认为你想做的事。