我有以下简单的功能,但它的 ggplot 命令不起作用。当从命令行给出该命令时,该命令可以正常工作:
> testfn <- function(gdf, first, second){
library(ggplot2)
print(ggplot(gdf, aes(first, second)) + geom_point())
}
>
> testfn(mydataf, vnum1, vnum2)
Error in eval(expr, envir, enclos) : object 'second' not found
>
> ggplot(mydataf, aes(vnum1, vnum2)) + geom_point()
> (plots graph without any error)
我尝试使用aes_string
代替aes
;并且还使用x=first, y=second
。事情有所改善,并绘制了一分! X 轴和 Y 轴显示与该点相关的数字作为标签。仅绘制第一行。哪里有问题。感谢您的帮助。
(根据我最初的建议和您的确认)
这是关于如何尝试将变量名称的字符串参数传递到 fn 中。
- 在命令行上,
ggplot(gdf, aes(first, second))
会工作得很好
- 但在你的函数内部,你还传递了first,second作为字符串变量。所以是的,你现在需要
aes_string(first,second)
在函数 testfn 内,因为您现在通过字符串变量第一个、第二个间接传递变量名称。
- 也因为变量名
first,second
是字符串,是的,当您调用 fn 时确实需要引用它们。 (我不确定ggplot的语言机制是什么aes()
过去不需要字符串,但无论如何。使用引号。)
- 另请参阅
quote()
R 中的命令
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)