修改 dplyr 中列表列的最后一个元素

问题描述 投票:0回答:1

我有一个小标题,其中一列是长度相等的向量列表。我想用所有向量的最大值(按位置)替换列表列的最后一个元素。

例如。

my_tibble <- tibble(a = list(c(2, 4, 10, 10, 10), c(1, 12, 4, 8.5, 14), c(1,3,9, 15, 11)), b = c("a", "b", "c"))

我想用所有三个元素中位置的最大值替换列

a
的最后一个元素。
a
的最后一个列表元素现在应该是

c(2, 12, 10, 15, 14)

如何在 dplyr 管道中执行此操作?到目前为止,我所有使用

purrr::map
的尝试都失败了,我认为我还没有更接近。如有任何帮助,我们将不胜感激。

r tidyverse purrr
1个回答
0
投票

我不完全确定您的预期输出,但请尝试:

library(dplyr)

my_tibble |>
  mutate(a = replace(a, row_number() == length(a), list(do.call(pmax, a))))

# A tibble: 3 × 2
  a         b    
  <list>    <chr>
1 <dbl [5]> a    
2 <dbl [5]> b    
3 <dbl [5]> c  

哪里

my_tibble$a
是:

[[1]]
[1]  2  4 10 10 10

[[2]]
[1]  1.0 12.0  4.0  8.5 14.0

[[3]]
[1]  2 12 10 15 14
© www.soinside.com 2019 - 2024. All rights reserved.