假设我有一个数据帧df
。 (下面我以mtcars
为例。)我可以编写一个函数,该函数将接受df
的任意两个属性并生成ggplot2散点图吗?
到目前为止,我有以下代码:
scatterplotter <- function(att1, att2){
plot <- ggplot(data=mtcars, aes(x=att1, y=att2)) +
geom_point(aes(color=as.factor(vs))) +
xlab(paste(att1)) + ylab(paste(att2)) +
ggtitle(paste("plot of",att1,"and ",att2))
return(plot)
}
现在,我遇到的问题是,尽管x=att1
和y=att2
仍然是应有的状态,但这不适用于粘贴,并且出现了一个错误,提示Error in parse(text = disp) : object 'disp' not found
。有人可以帮忙吗?
我不介意如何将名称输入函数,例如scatterplotter("disp","gear")
或scatterplotter(disp,gear)
。
(除base-R + ggplot2外,请不要提供其他软件包)
答案 0 :(得分:1)
使用aes_string()
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 3.6.3
scatterplotter <- function(att1, att2){
plot <- ggplot(data=mtcars, aes_string(x=att1, y=att2)) +
geom_point(aes(color=as.factor(vs))) +
xlab(paste(att1)) + ylab(paste(att2)) +
ggtitle(paste("plot of",att1,"and ",att2))
return(plot)
}
scatterplotter("mpg", "disp")
由reprex package(v0.3.0)于2020-05-15创建