我有一个大型的data.table对象,其中一个变量是字符向量的列表。我希望通过一个唯一的ID进行聚合,并在此过程中合并与该唯一ID的每一行相关联的所有字符向量。下面是一个简单的可重复示例:
DT <- data.table(ID = c(LETTERS[1:10], LETTERS[1:10]),
var = replicate(n = 20,
expr = sample(x = letters, size = 5, replace = F),
simplify = FALSE))
str(DT)
我尝试了aggregate
函数和来适应更具体的data.table表示法,聚合函数不能处理列表,我也不能理解列表变量的data.table表示法:
appended <- aggregate(var~ID, data = DT, FUN = "append")
appended <- DT[, .(var=append(var), ID=ID[1]), by="ID"]
理想情况下,我的输出应该具有以下结构:
> str(appended)
Classes ‘data.table’ and 'data.frame': 10 obs. of 2 variables:
$ ID : chr "A" "B" "C" "D" ...
$ var:List of 10
..
我不介意每个附加向量(appended$var)中的元素是否重复,但我计划稍后删除每个向量中的重复项,因此如果这是附加/聚合过程的副作用,那么我可以接受。
任何解决方案,甚至只是链接到特定的文档在这个案件,我还没有找到?
1条答案
按热度按时间yhuiod9q1#
您可以将append()与Reduce()一起使用:
但我建议用unlist()代替: