在 R 中使用 for 循环时无法访问列

Cannot access column when using for loop in R

bm是我的数据集,我想循环遍历数据集,每次取列名做图

for (i in colnames(bm)) {
  print(i)
  print(plot_xtab(bm$y,
             bm$i,
             margin = "row",
             bar.pos = "stack",
             axis.titles = "Deposit Subscription",
             legend.title = 1,
             show.values = TRUE,
             show.n = FALSE,
             geom.size = 0.5, expand.grid = TRUE, vjust = "right"))
  }

以下代码在联系人是我的第一列的情况下有效title/name

print(plot_xtab(bm$y,
             bm$contact,
             margin = "row",
             bar.pos = "stack",
             axis.titles = "Deposit Subscription",
             legend.title = 1,
             show.values = TRUE,
             show.n = FALSE,
             geom.size = 0.5, expand.grid = TRUE, vjust = "right"))

而且我已经测试发现循环 do 中的 i 输出显示了正确的列标题:“contact”、“job”等;不知道为什么 bm$i returns NULL

您的 i 是一个字符串,您不能将其与 $ 运算符一起使用。您需要使用 [][[]].

根据 class bmplot_xtab 的预期,两个运算符之间存在一些细微差别,但更安全的选择可能是使用 bm[[i]]在你的循环中(而不是 bm$i)。

实际上,因为它看起来不像您在其他任何地方使用列名,您也可以迭代列,for(i_col in bm) 然后使用 i_col 代替 bm[[i]]