R:data.table-将一个变量添加到数据表列表中,该列表包含列表中每个表的名称



我目前正在R中使用data.table,并试图将变量"data_set"添加到数据表列表中,该列表中包含该项的名称。

例如,表的列表是med、symp和care,我想将变量data_set添加到每个表中,其中在数据表med中,"data_set"等于"med",在数据表symp中,"data _set"将等于"symp"。我知道我可以使用lapply,但我一直纠结于如何将每个表的名称存储在"data_set"变量中。我知道事情会变成这样。。。。

tables<-c("med", "symp", "care")
tables_1<-lapply(mget(tables),function(x)x[, data_set:=…...])

如何在"data_set"变量中引用和存储每个数据表的名称?

我建议您可以在这里使用Map而不是lapply

med <- data.table(a=1); symp <- data.table(b=1); care <- data.table(d=1)
tables <- c("med", "symp", "care")
tables_1 <- Map(function(x, nm) copy(x)[, data_set := nm], mget(tables), tables)
tables_1
# $med
#    a data_set
# 1: 1      med
# $symp
#    b data_set
# 1: 1     symp
# $care
#    d data_set
# 1: 1     care

我使用copy推断您使用lapply不需要副作用。如果没有copy,全局环境变量(medsympcare(也会添加该列。这可能是需要的和/或可接受的,在这种情况下,删除copy以减少内存占用。

最新更新