使用 lapply 对多个数据表进行子集化

subset multiple data tables using lapply

我有多个数据表,并且都有一个名为 ID 的公共列。我有一个包含一组 ID 值的向量 vec。 我想使用 lapply 对使用 vec 的所有数据表进行子集化 我了解如何使用 lapply 对数据表进行子集化,但我的问题是如何将子集化的结果分配回原始数据表 这是我尝试过的:

 tables<-c("dt1","dt2","dt3","dt4")
 lapply(mget(tables),function(x)x[ID %in% vec,])

上面给出了所有数据表的子集,但我如何将它们分配回 dt1,dt2,dt3,dt4

我会将数据集保留在列表中而不是在全局环境中更新数据集对象,因为大多数操作都可以在列表中完成(包括读取文件和写入输出文件)。但是,如果您坚持,我们可以使用 list2env,它将使用子集数据集

更新原始数据集对象
 lst <- lapply(mget(tables),function(x)x[ID %in% vec,])
 list2env(lst, envir=.GlobalEnv)

您也可以只命名列表中的数据集:

tables <- c("dt1","dt2","dt3","dt4")
dflist <- lapply(mget(tables),function(x)x[ID %in% vec,])
dflist <- setNames(dflist, tables)