在r中使用for循环遍历名称向量


library(sjPlot)

我正在使用sjPlot创建快速xtab:

sjPlot::tab_xtab(var.row = mtcars$mpg ,var.col =mtcars$wt ,show.row.prc = TRUE)

但是由于我要在许多cols上运行它,所以我想建立一个循环:

cols <- names(mtcars)
for (i in cols) {

sjPlot::tab_xtab(
var.row =  mtcars$mpg,
var.col = mtcars$i,
show.row.prc = TRUE
)
}

但是这会抛出一个错误:

Error in table(x_full, grp_full) : 
all arguments must have the same length

为什么会发生这种情况,有人可以通过迭代解释子集,或者给我一个好的资源吗?

供参考——

for (i in cols) {
i <- 'cyl'

sjPlot::tab_xtab(
var.row =  mtcars$mpg,
var.col = mtcars[[i]],
show.row.prc = TRUE
)

}

但是这确实返回了mpg - cyl的图表:

for (i in cols) {
sjPlot::tab_xtab(
var.row =  mtcars$mpg,
var.col = mtcars$cyl,
show.row.prc = TRUE
)

}

感谢评论,这是解决方案,但仍在寻找一些理解。为什么是mtcars[[i]]而不是mtars[i]?为什么mrcars$i不起作用?

for (i in cols) {
plt <- sjPlot::tab_xtab(
var.row =  mtcars$mpg,
var.col = mtcars[[i]],
show.row.prc = TRUE
)
print(plt)

}

相关内容

  • 没有找到相关文章

最新更新