我编写了用因子变量绘制条形图的函数.当我运行我的功能时,显示错误消息.eval中的错误(expr,envir,enclos):找不到对象'dset'如何修改我的函数?谢谢!
x1=factor(c("f","m","f","f","m","f","f","m","f","m"))
x2=factor(c("1","2","1","1","1","2","2","2","1","1"))
y1=c(10,11,12,13,14,15,16,17,18,19)
y2=c(10,12,12,13,14,15,15,17,18,19)
y3=c(10,12,12,14,14,15,15,17,18,19)
bbb<- data.frame(x1,x2,y1,y2,y3)
myfunc<-function(dataframe){
library(ggplot2)
dset<-dataframe
for (i in 1:ncol(dset)){
if (is.factor(dset[,i])==T){
p3<-ggplot(data=dset, aes(x=dset[,i]))
p3<-p3+geom_bar(colour='blue',fill='blue')
print(p3)
}
}
}
myfunc(dataframe=bbb)
Run Code Online (Sandbox Code Playgroud)
转换为答案,因为它似乎很有用
aes用于评估所提供数据集范围内的未加引号的列名称(dset在您的情况下).dset[, i]不是列名,而是整列,aes不是为了处理而设计的.
幸运的是,您可以解析引用的列名称aes_string.因此,使用
aes_string(x = names(dset)[i])
Run Code Online (Sandbox Code Playgroud)
代替
aes(x = dset[, i])
Run Code Online (Sandbox Code Playgroud)
应该解决你的问题
| 归档时间: |
|
| 查看次数: |
551 次 |
| 最近记录: |