gpt4 book ai didi

r - Purrr 的修改函数

转载 作者:行者123 更新时间:2023-12-05 09:31:17 26 4
gpt4 key购买 nike

我正在尝试使用 purrr 的 modify_in 来修改列表的元素。列表示例:

tib_list <- map(1:3, ~ tibble(col_one = runif(5),
col_two = runif(5), col_three = runif(5)))

假设我想更改列表的元素 2 和 3 以取消选择 col_one。我想象这样做:

modify_in(tib_list, 2:length(tib_list), ~ select(.x, -col_one) 

但这会产生错误。然后我想做这样的事情,但这最终会重复列表

map(1:3, ~ modify_in(tib_list, .x, ~ select(.x, -col_one)) 

最佳答案

我认为您想使用 modify_at 来指定元素名称或位置。 modify_in 允许我们只使用一个位置,如 purrr::pluck

library(tidyverse)

tib_list <- map(1:3, ~ tibble(col_one = runif(5), col_two = runif(5), col_three = runif(5)))

modify_at(tib_list, c(2,3), ~ select(.x, -col_one))
#> [[1]]
#> # A tibble: 5 x 3
#> col_one col_two col_three
#> <dbl> <dbl> <dbl>
#> 1 0.190 0.599 0.824
#> 2 0.214 0.172 0.106
#> 3 0.236 0.666 0.584
#> 4 0.373 0.903 0.252
#> 5 0.875 0.196 0.643
#>
#> [[2]]
#> # A tibble: 5 x 2
#> col_two col_three
#> <dbl> <dbl>
#> 1 0.513 0.113
#> 2 0.893 0.377
#> 3 0.275 0.675
#> 4 0.529 0.612
#> 5 0.745 0.405
#>
#> [[3]]
#> # A tibble: 5 x 2
#> col_two col_three
#> <dbl> <dbl>
#> 1 0.470 0.789
#> 2 0.181 0.289
#> 3 0.680 0.213
#> 4 0.772 0.114
#> 5 0.314 0.895

reprex package 创建于 2021-08-27 (v0.3.0)

我们可以对一个位置使用 modify_in,但是提供一个向量,例如 c(2,3) 意味着我们想要访问第二个的第三个元素嵌套列表中的父元素。这就是我们看到以下错误的原因。

# works
modify_in(tib_list, 2, ~ select(.x, -col_one))

#> [[1]]
#> # A tibble: 5 x 3
#> col_one col_two col_three
#> <dbl> <dbl> <dbl>
#> 1 0.109 0.697 0.0343
#> 2 0.304 0.645 0.851
#> 3 0.530 0.786 0.600
#> 4 0.708 0.0324 0.605
#> 5 0.898 0.232 0.567
#>
#> [[2]]
#> # A tibble: 5 x 2
#> col_two col_three
#> <dbl> <dbl>
#> 1 0.766 0.157
#> 2 0.0569 0.0422
#> 3 0.943 0.0850
#> 4 0.947 0.0806
#> 5 0.761 0.297
#>
#> [[3]]
#> # A tibble: 5 x 3
#> col_one col_two col_three
#> <dbl> <dbl> <dbl>
#> 1 0.878 0.864 0.540
#> 2 0.168 0.745 0.120
#> 3 0.943 0.338 0.535
#> 4 0.353 0.478 0.204
#> 5 0.267 0.669 0.478

# doesn't work
modify_in(tib_list, c(2,3), ~ select(.x, -col_one))

#> Error in UseMethod("select"): no applicable method for 'select' applied to an object of class "c('double', 'numeric')"

关于r - Purrr 的修改函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68945973/

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