如何在 R 中的 for 循环中引用列表中的变量?

How do you use reference a variable from a list in a for loop in R?

我正在尝试编写一些代码来遍历分类变量列表和 运行 每个分类变量的一些汇总统计数据,但是我无法在 for 循环中识别变量。它试图按 for 循环的虚拟名称('var',在以下示例中)而不是它引用的内容进行分组。下面的简单示例。

library(dplyr)
cat_vars <- c('hair_color', 'skin_color', 'eye_color')
for (var in cat_vars){
   starwars %>%
      group_by(var) %>%
      summarise(n())
}

感谢您的帮助!

要引用存储为字符的变量名,请使用 .data 代词,如下所示:.data[[var]].

正如所写,您的 for 循环不会修改您的数据或产生任何输出。你想让它做什么?要打印每个循环的结果,请添加 print():

for (var in cat_vars){
  starwars %>%
    group_by(.data[[var]]) %>%
    summarise(n()) %>% 
    print()
}

#> # A tibble: 13 x 2
#>    hair_color    `n()`
#>    <chr>         <int>
#>  1 auburn            1
#>  2 auburn, grey      1
#>  3 auburn, white     1
#>  4 black            13
#>  5 blond             3
#>  6 blonde            1
#>  7 brown            18
#>  8 brown, grey       1
#>  9 grey              1
#> 10 none             37
#> 11 unknown           1
#> 12 white             4
#> 13 <NA>              5
#> 
#> # A tibble: 31 x 2
#>    skin_color          `n()`
#>    <chr>               <int>
#>  1 blue                    2
#>  2 blue, grey              2
#>  3 brown                   4
#>  4 brown mottle            1
#>  5 brown, white            1
#>  6 dark                    6
#>  7 fair                   17
#>  8 fair, green, yellow     1
#>  9 gold                    1
#> 10 green                   6
#> # ... with 21 more rows
#> 
#> # A tibble: 15 x 2
#>    eye_color     `n()`
#>    <chr>         <int>
#>  1 black            10
#>  2 blue             19
#>  3 blue-gray         1
#>  4 brown            21
#>  5 dark              1
#>  6 gold              1
#>  7 green, yellow     1
#>  8 hazel             3
#>  9 orange            8
#> 10 pink              1
#> 11 red               5
#> 12 red, blue         1
#> 13 unknown           3
#> 14 white             1
#> 15 yellow           11

reprex package (v2.0.1)

于 2022-03-17 创建