如何使用包含列名称的变量来访问列?
假设我们有一个包含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)
。
答案 0 :(得分:6)
尝试使用双括号而不是单括号:
tmp1 <- 'Sepal.Width'
tmp2 <- 'Species'
boxplot( iris[[tmp1]] ~ iris[[tmp2]] )
答案 1 :(得分:1)
你可以这么做。 with
语句指示boxplot
在DF
内查找变量,get
语句访问名为tmp
的对象。
with(DF, boxplot(get(tmp) ~ Var2))
这是一个说明性的例子
tmp <- 'wt'
with(mtcars, boxplot(get(tmp) ~ cyl))
答案 2 :(得分:1)
您可以使用paste
构建公式,然后转换为boxplot调用的公式:
boxplot(as.formula(paste(temp,"Var2",sep="~")),DF)