通过 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)
会做我认为你想做的事。
我想从内存中删除一些 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)
会做我认为你想做的事。