引用r data.table';中的嵌套列表元素:=';(参考转让)
作为计算新data.table列的一部分,我希望访问嵌套列表中存储的对象,并且指向该对象的列表索引保存在其他data.table列中。下面是一个简单的例子:引用r data.table';中的嵌套列表元素:=';(参考转让),r,data.table,R,Data.table,作为计算新data.table列的一部分,我希望访问嵌套列表中存储的对象,并且指向该对象的列表索引保存在其他data.table列中。下面是一个简单的例子: library(data.table) list.test <- list("A" = list("AA" = 1, "BB" = 2), "B" = list("AA" = 3, "BB" = 4)) dt.t
library(data.table)
list.test <- list("A" = list("AA" = 1, "BB" = 2), "B" = list("AA" = 3, "BB" = 4))
dt.test <- data.table(
first.idx = rep(c("A", "B"), each=2),
second.idx = rep(c("AA", "BB"), times = 2)
)
dt.test[ , result := list.test[[first.idx]][[second.idx]] ]
所需输出为:
first.idx second.idx result
1: A AA 1
2: A BB 2
3: B AA 3
4: B BB 4
无法以这种方式对嵌套列表中的索引进行矢量化(您尝试调用
list.test[[c(“a”、“a”、“B”、“B”)]][[c(“AA”、“BB”、“AA”、“BB”)]]
)。相反,您可以使用每一行的单独分组逐行执行索引(即列表。测试[[“A”][[“AA”]]]]
等):
dt.test[,result:=list.test[[c(first.idx,second.idx)],by=1:nrow(dt.test)]
dt试验
#>first.idx second.idx结果
#>1:AA1
#>2:A BB 2
#>3:B AA 3
#>4:B BB 4
first.idx second.idx result
1: A AA 1
2: A BB 2
3: B AA 3
4: B BB 4