簡體   English   中英

使用purrr :: walk重命名數據幀列表中的列

[英]rename a column in a list of dataframes in using purrr::walk

我需要為列表中的所有數據框重命名第二列。 我正在嘗試使用purrr :: walk。

這是代碼:

cyl.name<- c('4-cyl', '6-cyl', '8-cyl')
cyl<- c(4,6,8)    
car <- map(cyl, ~mtcars %>% filter(cyl==.x) %>%
                     group_by(gear) %>% 
                     summarise(mean=mean(hp)) )
walk (seq_along(cyl.name), function (x) names(car[[x]])[2]<- cyl.name[x])

當我檢查列名稱時,所有均值列仍被命名為“ mean”。 我做錯了什么?

如果您具有這樣的列名列表,則可以使用map2同時循環遍歷filter變量和命名變量。 這樣一來,您便可以為列命名,而不必在創建列表后重命名。

這不涉及到使用一些tidyevalrlang運營dplyr編程

map2(cyl, cyl.name, ~mtcars %>% 
         filter(cyl==.x) %>%
         group_by(gear) %>%
         summarise( !!.y := mean(hp)) )

[[1]]
# A tibble: 3 x 2
   gear `4-cyl`
  <dbl>   <dbl>
1     3      97
2     4      76
3     5     102

[[2]]
# A tibble: 3 x 2
   gear `6-cyl`
  <dbl>   <dbl>
1     3   107.5
2     4   116.5
3     5   175.0

[[3]]
# A tibble: 2 x 2
   gear  `8-cyl`
  <dbl>    <dbl>
1     3 194.1667
2     5 299.5000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM