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

问题描述

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"))
  }

以下代码适用于联系人是我的第一个标题/名称

print(plot_xtab(bm$y,bm$contact,vjust = "right"))

并且我已经测试发现循环中的 i 输出确实显示了正确的列标题:“联系人”、“工作”等;不知道为什么 bm$i 返回 NULL

解决方法

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

这两个运算符之间存在一些细微的差异,具体取决于 bm 是什么类以及 plot_xtab 期望什么,但更安全的选择可能是在循环中使用 bm[[i]](而不是bm$i).

实际上,由于您似乎没有在其他任何地方使用列名,因此您也可以遍历列,for(i_col in bm) 然后使用 i_col 代替 bm[[i]]>