返回data.table中列的列表

时间:2016-09-15 11:41:25

标签: r data.table

我在R中有一个data.table,我希望使用data.tables计算基于行值的列表。我目前尝试使用以下代码作为示例

library("data.table")
 dt <- data.table (data.frame(name = c("A","B","C")), num = c(10,20,30))
dt [,seq := list(replicate(5,num)),by = .I]

但是,它不会生成列表,而是将num列中的值重复到seq列。如下图所示

name     num    seq
A         10     10
B         20     20
C         30     30

预期输出

name     num    seq
A         10     list(10, 10, 10, 10, 10)
B         20     list(20, 20, 20, 20, 20)
C         30     list(30, 30, 30, 30, 30)

我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

感谢@Frank和@David,答案是

dt [,seq2 := list(list(replicate(5,num))), by = 1:nrow(dt)]

主要由=引起。我默默地做什么。

或者,您可以执行以下操作,因为最好不进行行方式操作。

dt[, res := transpose(replicate(5, num, simplify = FALSE))]

在不同的方向,如果您要使用dplyr

dt %>% rowwise() %>% mutate(seq = list(rep(num, 5)))