【问题标题】:Recursive boxplot in R returning invalid variable type errorR中的递归箱线图返回无效的变量类型错误
【发布时间】:2012-11-08 19:19:05
【问题描述】:

我正在尝试在 for 循环中在 R 中绘制多个箱线图,但无法使用 data.frame[column] 引用数据集中的列,因为它返回以下内容:

Error in model.frame.default(formula = e[1] ~ e[2]) : invalid type (list) for variable 'e[1]'

以下代码返回的错误与我得到的相同:

x <- rnorm(20)
y <- rnorm(20)
e <- data.frame(x, y)
boxplot(e[1] ~ e$y)

有什么建议吗?我真的被困在这里了。

【问题讨论】:

    标签: r loops for-loop boxplot


    【解决方案1】:

    这里有两个问题:

    1. 正如@Sven Hohenstein 所指出的,您的boxplot 调用需要正确引用data.frame 列。

    2. 我认为您需要两个并排的箱线图(x 和 y),而不是 x ~ y。例如:

    # All these commands are equivalent:
    boxplot(e$x, e$y)
    boxplot(e[[1]], e[[2]])
    boxplot(e[, 1], e[, 2])
    
    # Probably not what you want:
    boxplot(e$x ~ e$y)
    boxplot(x ~ y, data=e)
    

    【讨论】:

    • 是的,使用 dataframe[[x]] 进行引用可以解决问题
    • 我正在绘制变量 x 相对于治疗 y 即 (x~y),并排 (x, y) 将 y 视为变量并将其绘制在 x 旁边,而不是绘制 x尊重治疗。
    • 好的,我想我现在明白了。我之前正在查看您的示例数据,其中 x 和 y 都是连续变量,但实际上您将 y 作为分类变量。
    【解决方案2】:

    要访问数据框df 的列x,请使用

    df[[x]]
    

    df[ , x]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 2019-07-06
      • 2019-11-19
      • 2021-06-09
      相关资源
      最近更新 更多