问题描述
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]]
>