【发布时间】:2015-05-20 20:02:11
【问题描述】:
我有多个数据表,并且都有一个名为ID 的公共列。我有一个向量vec,其中包含一组ID 值。
我想使用lapply 对使用vec 的所有数据表进行子集化
我了解如何使用lapply 对数据表进行子集化,但我的问题是如何将子集化结果分配回原始数据表
这是我尝试过的:
tables<-c("dt1","dt2","dt3","dt4")
lapply(mget(tables),function(x)x[ID %in% vec,])
上面给出了所有数据表的子集,但我如何将它们分配回dt1,dt2,dt3,dt4?
【问题讨论】:
-
如果您没有附加数据集,我认为
ID应该是x$ID(不建议附加)。此外,最好将其保留在列表中,而不是在全局环境中拥有许多对象。如果您坚持,可以使用list2env。它。lst <- lapply(mget(tables),function(x)x[ID %in% vec,]); list2env(lst, envir=.GlobalEnv) -
感谢 akrun,我从未使用过 list2env,但似乎可以正常工作。一个问题:我在 R 闪亮的应用程序中使用它。将列表转换为全局环境中的对象 - 会干扰其他用户会话吗?
-
我不明白
other user sessions。全局环境中有很多对象一般都不好