使用 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)
我有多个数据表,并且都有一个名为 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)