我有这个tibble,它有一个带有向量的列表列
df <- data_frame(grp = c("A", "A", "B", "B"),
x = rep(c(list(c(1,2,3)), list(c(4,5,6))), 2))
我想做的事情(最好是在tidyverse内)是在列表中执行元素明智的向量添加, 基本上:
c(1,2,3) + c(4,5,6)
# [1] 5 7 9
此:
# A tibble: 4 × 2
grp x
<chr> <list>
A list(c(1,2,3))
A list(c(4,5,6))
B list(c(1,2,3))
B list(c(4,5,6))
变为:
# A tibble: 2 × 2
grp y
<chr> <list>
A list(c(5,7,9))
B list(c(5,7,9))
什么可能是一个好方法?
答案 0 :(得分:3)
以下内容也可以满足您的需求:
dff %>% group_by(grp) %>%
summarise(x = list(Reduce("+",x))) %>%
ungroup()
我希望这会有所帮助。
答案 1 :(得分:2)
我们可以尝试
library(dplyr)
library(tidyr)
r1 <- lengths(df$x)[1]
unnest(df) %>%
group_by(grp) %>%
mutate(grp1 = rep(seq(r1), 2)) %>%
group_by(grp1, add = TRUE) %>%
summarise(x = sum(x)) %>%
group_by(grp) %>%
summarise(x= list(x))
# A tibble: 2 × 2
# grp x
# <chr> <list>
#1 A <dbl [3]>
#2 B <dbl [3]>