将列添加到data.table,其行数少于列长度

时间:2014-12-05 15:35:05

标签: r data.table dplyr

基本上,我想使用dplyr编写以下data.table代码:

library(dplyr)
set.seed(1)
df <- data.frame(a = 2:3)
(df2 <- group_by(df, a) %>%
  do({b <- runif(as.numeric(.[1, 1]))
      data.frame(b, c = rep(sum(b), nrow(.)))}))

使用data.tableby参数将结果折叠为每组一行,我无法弄清楚如何在一个简洁的代码中避免这个参数。

library(data.table)
set.seed(1)
dt <- data.table(a = 2:3)
(dt[ , b := runif(as.numeric(.SD[1, 1])), by = a])
(dt[ , c := sum(b), by = a])

1 个答案:

答案 0 :(得分:1)

您可以在方括号内的第二个参数中使用list()。

library(data.table)
set.seed(1)
dt <- data.table(a = 2:3)
(dt <- dt[ , list(b = runif(as.numeric(a))), by = a])
(dt[ , c := sum(b), by = a])