[英]How to pass argument input to a self-defined function in R?
我做了一個自定義的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'。
我該怎么做才能做到這一點?
嘗試:
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')
將函數參數中的abcissa固定為默認參數會更加清晰。
您可以使用簡單的添加行使原始函數工作(並且我添加了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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.