我做了一个自定义的plottest功能:
plottest<-function(dataframe, var1){
ggplot(dataframe)+geom_point(aes(x=T, y=var1))
}
我希望我可以将数据框和列名传递给它,这样我就可以重复绘制不同的列。
df <- data.frame(T=(1:10), y1=(21:30), y2=(51:60), y3 = (61:70))
但是当我这样做时:
library(ggplot2)
plottest(df, y1)
错误消息显示:找不到对象'var1'。
我该怎么做才能使这项工作?
答案 0 :(得分:3)
尝试:
df <- data.frame(T=(1:10), y1=(21:30), y2=(51:60), y3 = (61:70))
plottest<-function(dataframe, var1){
ggplot(dataframe, aes_string(x='T', y=var1))+geom_point()
}
plottest(df, 'y1')
将函数参数中的横坐标修改为默认参数会更加清晰。
答案 1 :(得分:0)
您可以使用简单的添加行使原始函数工作(我添加了ylab()调用以防止绘图始终使用“y”作为ylab。
plottest<-function(dataframe, var1){
y <- substitute(var1)
ggplot(dataframe)+geom_point(aes(x=T, y=y)) + ylab(y)
}
library(ggplot2)
plottest(df, y1)