我在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)
我该怎么做呢?
答案 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)))