R 我们可以同时在多个对象上设置dt吗?
我需要从外部加载许多rds文件,为了使事情进行得更顺利,我倾向于在对象上设置DT 有可能一次全部设置吗?我试过:R 我们可以同时在多个对象上设置dt吗?,r,data.table,R,Data.table,我需要从外部加载许多rds文件,为了使事情进行得更顺利,我倾向于在对象上设置DT 有可能一次全部设置吗?我试过: lapply(ls(), setDT) lapply(list(ls()), setDT) for(i in ls()) setDT(i) #Error in FUN(X[[i]], ...) : # Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table' 结果都是一样的。还有更优雅的方
lapply(ls(), setDT)
lapply(list(ls()), setDT)
for(i in ls()) setDT(i)
#Error in FUN(X[[i]], ...) :
# Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'
结果都是一样的。还有更优雅的方式吗
p、 一位朋友建议使用do.call
:
do.call(setDT, list("A", "B", "C"))
但这似乎不起作用。您可以
过滤数据。在环境中设置s并将setDT
应用于以下各项:
all_data_tables = Filter(function(x) is.data.frame(eval(as.name(x))), ls())
lapply(all_data_tables, function(x) setDT(eval(as.name(x))))
您还可以用is.list
或更复杂的内容替换is.data.frame
,但我认为is.data.frame
涵盖了您的用例
您还可以使用get
,并且在ls
/eval
/get
中指定envir
时也可以更加小心,谢谢Michael。现在我知道这是关于值输入的类。@Grec001不要被错误消息吓倒——它们是您的朋友!“setDT”的参数“x”应该是“list”、“data.frame”或“data.table”