【发布时间】:2016-12-12 07:32:00
【问题描述】:
我正在尝试在 this 等列表列中存储的向量之间进行 set 操作。
DT <- data.table(exp = c("exp1", "exp2", "exp2"),
sample = c(1L, 1L, 2L),
listdata = list(c(2L,5L), c(2L,3L,5L,7L), c(1L,2L,6L)))
> DT
exp sample listdata
1: exp1 1 2,5
2: exp2 1 2,3,5,7
3: exp2 2 1,2,6
虽然很麻烦,但我可以做
DT$inc = list(setdiff(unlist(DT$listdata[2]), unlist(DT$listdata[1])))
并获取值为c(3,7) 的新列表列。但是如果我尝试使用
DT$inc = list(list(setdiff(unlist(DT$listdata, recursive = FALSE), unlist(DT$listdata[1]))))
期待一个新列“inc”
0
c(3,7)
c(1,6)
我收到c(3,7,1,6)。显然unlist 将整个列表列展平在一起。知道发生了什么吗?
我也在学习 dplyr 和 data.table。因此,如果您可以使用其中之一提供解决方案,那将非常有帮助。
【问题讨论】:
标签: r list data.table dplyr