gpt4 book ai didi

r - 汇总到矢量输出

转载 作者:行者123 更新时间:2023-12-04 20:27:12 25 4
gpt4 key购买 nike

假设我有以下(简化的)tibble,其中包含向量中的组和值:

set.seed(1)
(tb_vec <- tibble(group = factor(rep(c("A","B"), c(2,3))),
values = replicate(5, sample(3), simplify = FALSE)))
# A tibble: 5 x 2
group values
<fct> <list>
1 A <int [3]>
2 A <int [3]>
3 B <int [3]>
4 B <int [3]>
5 B <int [3]>

tb_vec[[1,2]]
[1] 1 3 2

我想通过对它们求和(矢量化)来总结每组的值向量并尝试以下操作:
tb_vec %>% group_by(group) %>% 
summarize(vec_sum = colSums(purrr::reduce(values, rbind)))

Error: Column vec_sum must be length 1 (a summary value), not 3



这个错误让我感到惊讶,因为 tibbles(输出格式)也可以包含向量。

我的预期输出将是以下总结的小标题:
# A tibble: 2 x 2
group vec_sum
<fct> <list>
1 A <dbl [3]>
2 B <dbl [3]>

是否有一个 tidyverse 解决方案适应汇总的矢量输出?我想避免 split 小标题,因为那样我就会失去这个因素。

最佳答案

您只需要添加 list(.)summarise在您的解决方案中,为了能够有一个包含 2 个元素的列,其中每个元素是一个包含 3 个值的向量:

library(tidyverse)

set.seed(1)
(tb_vec <- tibble(group = factor(rep(c("A","B"), c(2,3))),
values = replicate(5, sample(3), simplify = FALSE)))

tb_vec %>%
group_by(group) %>%
summarize(vec_sum = list(colSums(purrr::reduce(values, rbind)))) -> res

res$vec_sum

# [[1]]
# [1] 2 4 6
#
# [[2]]
# [1] 6 5 7

关于r - 汇总到矢量输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56957399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com