首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Purrr修改-In函数

Purrr修改-In函数
EN

Stack Overflow用户
提问于 2021-08-26 22:24:02
回答 2查看 142关注 0票数 2

我试图使用purrr的modify_in来修改列表的元素。清单的一个例子:

代码语言:javascript
复制
tib_list <- map(1:3, ~ tibble(col_one = runif(5),
    col_two = runif(5), col_three = runif(5)))

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

代码语言:javascript
复制
modify_in(tib_list, 2:length(tib_list), ~ select(.x, -col_one) 

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

代码语言:javascript
复制
map(1:3, ~ modify_in(tib_list, .x, ~ select(.x, -col_one)) 
EN

回答 2

Stack Overflow用户

发布于 2021-08-26 22:30:59

我从没用过modify_in,但你可以用

代码语言:javascript
复制
library(purrr)
library(dplyr)

tib_list %>% 
  imap(~ if (.y > 1) { select(.x, -col_one) } else { .x })

要获得

代码语言:javascript
复制
[[1]]
# A tibble: 5 x 3
  col_one col_two col_three
    <dbl>   <dbl>     <dbl>
1   0.710   0.189    0.644 
2   0.217   0.946    0.955 
3   0.590   0.770    0.0180
4   0.135   0.101    0.888 
5   0.640   0.645    0.346 

[[2]]
# A tibble: 5 x 2
  col_two col_three
    <dbl>     <dbl>
1   0.267    0.926 
2   0.456    0.0902
3   0.659    0.707 
4   0.421    0.0451
5   0.801    0.220 

[[3]]
# A tibble: 5 x 2
  col_two col_three
    <dbl>     <dbl>
1   0.437     0.649
2   0.256     0.466
3   0.331     0.594
4   0.586     0.558
5   0.625     0.444
票数 2
EN

Stack Overflow用户

发布于 2021-08-26 22:32:59

我们可以使用modify_if

代码语言:javascript
复制
modify_if(tib_list,.f =  ~ .x %>% select(-col_one), 
       .p = seq_along(tib_list) != 1)

-output

代码语言:javascript
复制
[[1]]
# A tibble: 5 x 3
  col_one col_two col_three
    <dbl>   <dbl>     <dbl>
1   0.819   0.666    0.384 
2   0.183   0.549    0.0211
3   0.374   0.240    0.252 
4   0.359   0.913    0.792 
5   0.515   0.402    0.217 

[[2]]
# A tibble: 5 x 2
  col_two col_three
    <dbl>     <dbl>
1   0.696    0.0269
2   0.433    0.147 
3   0.235    0.743 
4   0.589    0.748 
5   0.635    0.851 

[[3]]
# A tibble: 5 x 2
  col_two col_three
    <dbl>     <dbl>
1  0.707      0.976
2  0.0966     0.130
3  0.574      0.572
4  0.854      0.680
5  0.819      0.582
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68945973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档