【问题标题】:Boxplot - accessing column names with variables箱线图 - 使用变量访问列名
【发布时间】:2011-12-16 15:49:28
【问题描述】:

如何使用包含列名称的变量来访问列?

假设我们有一个包含 3 列的数据框 DF: Var1 Var2 Var3,其中 Var3 包含数值数据,Var1 和 Var2 包含一些因子。

我们想使用包含列名称的临时变量生成 2 个箱线图:

temp<-"Var3"
boxplot(DF[temp]) #(<--that works).

如果我使用相同的方法为 Var2 中的每个因子获取箱线图,它不会:

boxplot(DF[temp]~DF$Var2) #(<-- does not work).

我怎样才能让它工作?

注释: 如果我直接使用名称“Var3”,它确实可以工作并显示几个箱线图:

boxplot(DF$Var3~DF$Var2)

【问题讨论】:

    标签: r boxplot


    【解决方案1】:

    尝试使用双括号代替单括号:

    tmp1 <- 'Sepal.Width'
    tmp2 <- 'Species'
    boxplot( iris[[tmp1]] ~ iris[[tmp2]] )
    

    【讨论】:

    • 感谢您的建议。在我尝试 [,[tmp1]] 之前它不起作用。您的解决方案更易于执行,而且效果很好。
    【解决方案2】:

    你可以简单地做到这一点。 with 语句指示boxplotDF 中查找变量,get 语句访问名称为tmp 的对象。

    with(DF, boxplot(get(tmp) ~ Var2))
    

    这是一个说明性的例子

    tmp <- 'wt'
    with(mtcars, boxplot(get(tmp) ~ cyl))
    

    【讨论】:

    • 亲爱的 Ramnath,非常感谢您的回答!我特别喜欢您详细描述代码中不同元素的作用。
    【解决方案3】:

    您可以使用paste 构造公式,然后转换为用于箱线图调用的公式:

    boxplot(as.formula(paste(temp,"Var2",sep="~")),DF)
    

    【讨论】:

    • 似乎有许多不同的选项可以执行该任务。我试过你的解决方案,效果很好。非常有趣的方法。
    猜你喜欢
    • 2023-04-04
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多