2

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

假设我们有一个包含 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).

4

3 回答 3

7

尝试使用双括号而不是单括号:

tmp1 <- 'Sepal.Width'
tmp2 <- 'Species'
boxplot( iris[[tmp1]] ~ iris[[tmp2]] )
于 2011-10-27T17:27:50.530 回答
1

你可以简单地做到这一点。该with语句指示boxplot在其中查找变量DF,该get语句访问具有名称的对象tmp

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

这是一个说明性示例

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

在此处输入图像描述

于 2011-10-27T16:13:08.393 回答
1

您可以使用paste构造公式,然后转换为 boxplot 调用的公式:

boxplot(as.formula(paste(temp,"Var2",sep="~")),DF)
于 2011-10-27T16:32:35.170 回答