如何将参数输入传递给 R 中的自定义函数?
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)
显示错误消息 saying:object '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')
将函数参数中的横坐标固定为默认参数会更清晰。
您可以使用简单的添加行使您的原始函数工作(我添加了 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)
我做了一个自定义的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)
显示错误消息 saying:object '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')
将函数参数中的横坐标固定为默认参数会更清晰。
您可以使用简单的添加行使您的原始函数工作(我添加了 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)