【发布时间】:2017-12-06 22:32:07
【问题描述】:
假设我们有这个玩具数据:
temp <- data.frame(A=1:6, gr=c("A","A","A","B","B","B"))
我可以很容易地创建一个情节
lev <- c("A", "B")
ggplot()+geom_point(data=temp,aes(x=A, y=gr))+ylim(lev)
但我想把它转换成一个函数,以便于更改输入参数
myplot <- function(lev=lev) {ggplot()+geom_point(data=temp,aes(x=A, y=gr))+ylim(lev)}
但是当我运行时
lev <- c("B","A")
myplot()
我收到此错误:
限制错误(c(...),“y”):承诺已在评估中: 递归默认参数引用还是更早的问题?
我尝试将 ylim 转换为因子,并使用 eval,但它也不起作用。
我尝试过参数化其他东西,例如输入数据集,它们运行良好,但我不明白为什么 ylim 不这样做。
有一个问题讲aes参数的相关问题
Pass function argument to ggplot label
但它的解决方案使用aes_string,不适用于此处。
【问题讨论】:
标签: r function ggplot2 parameters