迭代箱线图 R model.frame.default

Iterate boxplot R model.frame.default

我有一个关于循环数据框和制作依赖于另一个数据框的数据框的每个数字列的箱线图的问题。例如,来自 mtcars:提供每列与齿轮列的箱线图。

我尝试了如下操作:

for (i in names(mtcars)){
boxplot(i ~ gear, data = mtcars)
}

但是,这会导致以下错误:

 "Error in model.frame.default(formula = i ~ gear, data = mtcars) : 
  variable lengths differ (found for 'gear')"

我知道 Whosebug 上还有其他帖子表明在某些情况下 NA 值禁止这种公式工作,但 mtcars 数据集是一个完整的数据集,因此 NA 值不是问题。

我的问题:如何轻松地为每个变量创建一个箱线图,而不是数据框中的 'fixed' 变量?例如:

boxplot(mpg ~ gear, data = mtcars)

boxplot(cyl ~ gear, data = mtcars)

以此类推

可以在其他上下文中找到与此错误相关的其他帖子 here

不幸的是,我无法使用此处描述的答案解决我的问题,因为在大多数情况下,NA 值是一个问题,或者在使用用户定义函数时从列表中提取元素等更技术性的问题。

只需在 for 循环中的 i 之前添加 get。 根据您的问题,不清楚输出应该是什么。如果我可以从你的 loop 继续,你可以这样做:

for(i in names(mtcars)){
with(mtcars, boxplot(get(i) ~ gear))
}