R 将data.table中的列表中的值分配/提取到列
我试图从列列表中获取数据,并将其分配给不同的列——假设列表中的向量都具有固定长度R 将data.table中的列表中的值分配/提取到列,r,data.table,R,Data.table,我试图从列列表中获取数据,并将其分配给不同的列——假设列表中的向量都具有固定长度 require(data.table) d <- data.table(id=1:3,l=list(c(1,2),c(5,6),c(7,9))) # d # id l # 1: 1 1,2 # 2: 2 5,6 # 3: 3 7,9 d[,':='(l1 = l[[1]][1],l2=l[[1]][2])] # d # id l l1 l2 # 1: 1 1,2 1
require(data.table)
d <- data.table(id=1:3,l=list(c(1,2),c(5,6),c(7,9)))
# d
# id l
# 1: 1 1,2
# 2: 2 5,6
# 3: 3 7,9
d[,':='(l1 = l[[1]][1],l2=l[[1]][2])]
# d
# id l l1 l2
# 1: 1 1,2 1 2
# 2: 2 5,6 1 2
# 3: 3 7,9 1 2
# EXPECTED
# d
# id l l1 l2
# 1: 1 1,2 1 2
# 2: 2 5,6 5 6
# 3: 3 7,9 7 9
require(data.table)
d好吧,显然我必须强迫进行粗暴的治疗。在这种情况下,例如通过ID:
d[,':='(l1 = l[[1]][1],l2=l[[1]][2]),by=.(id)]
我们可以使用Map
d[, paste0("l", 1:2) := do.call(Map, c(f = list, l))]
d
# id l l1 l2
#1: 1 1,2 1 2
#2: 2 5,6 5 6
#3: 3 7,9 7 9
如果我们需要一个向量作为输出,请将f=list
更改为f=c
d[, paste0("l", 1:2) := do.call(Map, c(f = c, l))]