ggplot在函数中不起作用,将变量名称作为字符串传递

rns*_*nso 5 r function parameter-passing variable-names ggplot2

我有以下简单的功能,但其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)
Run Code Online (Sandbox Code Playgroud)

我试着用aes_string而不是aes; 并且还使用x=first, y=second.事情有所改善,有一点被绘制出来!X和Y轴显示与该点相关的数字作为标签.仅绘制第一行.问题出在哪儿.谢谢你的帮助.

smc*_*mci 5

(根据我最初的建议和您的确认)

这是关于如何尝试将变量名称的字符串参数传递到 fn 中。

  • 在命令行上,ggplot(gdf, aes(first, second))可以正常工作
  • 但在你的函数内部,你还传递了first,second作为字符串变量。所以是的,您现在需要aes_string(first,second)在函数 testfn 内,因为您现在通过字符串变量第一个、第二个间接传递变量名称。
  • 另外,由于变量名称first,second是字符串,所以在调用 fn 时确实需要引用它们。(我不确定 ggplotaes()使用什么语言机制不需要字符串,但无论如何。使用引号。)
  • 另请参阅quote()R 中的命令