我不确定要使用哪个函数来完成以下操作:
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
也可以实现。 - dickoadplyr
- 我真的不认为将其与data.table
一起使用有什么意义); 听起来像是summarise
中的一个 bug。 - eddidf %>% group_by(b) %>% slice(rep(1, 3))
可以正常工作。对于逐行操作,其中每行返回任意数量的值,您可以使用df %>% mutate(new = map(old, f)) %>% unnest()
的习惯用法。 - Axeman