如何在 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 创建
我正在尝试编写一些代码来遍历分类变量列表和 运行 每个分类变量的一些汇总统计数据,但是我无法在 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 创建