【发布时间】:2021-11-20 00:15:04
【问题描述】:
我想使用循环来创建一列与 df 中的每一列的交叉表。我从这段代码开始(替换为 iris df),它适用于两个变量:
iris <- iris
tbl <- iris %>%
tabyl(Species, Sepal.Length, show_missing_levels = FALSE, show_na = FALSE) %>%
adorn_percentages("row") %>%
adorn_pct_formatting(digits = 0) %>%
adorn_ns() %>%
adorn_title("combined") %>%
knitr::kable()
print(tbl)
我的 df 包含 ~200 列。我想我会编写一个 for 循环来打印一个变量与其他每个变量的交叉表。这是我尝试过的:
cols <- c('Sepal.Length', 'Sepal.Width')
for (c in cols){
tbl <- iris %>%
tabyl(Species, c, show_missing_levels = FALSE, show_na = FALSE) %>%
adorn_percentages("row") %>%
adorn_pct_formatting(digits = 0) %>%
adorn_ns() %>%
adorn_title("combined") %>%
knitr::kable()
print(tbl)
}
这会返回Column `c` is not found.
这似乎应该很简单,但我想不通。感谢您的帮助。
【问题讨论】:
-
在循环中使用
!!sym(c)而不是c。见https://rlang.r-lib.org/reference/bang-bang.html。