【发布时间】:2014-03-11 08:41:04
【问题描述】:
我不确定使用哪个函数来执行以下操作:
library(data.table)
dt = data.table(a = 1:4, b = 1:2)
dt[, rep(a[1], 3), by = b]
# b V1
#1: 1 1
#2: 1 1
#3: 1 1
#4: 2 2
#5: 2 2
#6: 2 2
summarise 和 mutate 都不满意这个长度:
library(dplyr)
df = data.frame(a = 1:4, b = 1:2)
df %.% group_by(b) %.% summarise(rep(a[1], 3))
#Error: expecting a single value
df %.% group_by(b) %.% mutate(rep(a[1], 3))
#Error: incompatible size (3), expecting 2 (the group size) or 1
【问题讨论】:
-
不知道是否有帮助,但使用
dplyr代码和data.table可以工作,而plyr你也可以使用data.frame来做到这一点。 -
@dickoa 谢谢,这很有趣(fwiw 这主要是让我了解如何使用
dplyr的练习——我真的不明白将它与data.table一起使用的意义) ;听起来像summarise中的一个错误然后 -
+1 这是一个有趣的区别;希望最终解决方案允许任何组的任意返回长度。
-
在这种情况下
df %>% group_by(b) %>% slice(rep(1, 3))工作正常。对于每行返回任意数量的值的逐行操作,您可以使用df %>% mutate(new = map(old, f)) %>% unnest()成语。
标签: r data.table dplyr