为了账号安全,请及时绑定邮箱和手机立即绑定

在aes内的局部变量

在aes内的局部变量

德玛西亚99 2019-08-28 09:48:50
在aes内的局部变量aes当我用ggplot绘图时,我正在尝试使用局部变量。这是我的问题归结为本质:xy <- data.frame(x=1:10,y=1:10)plotfunc <- function(Data,YMul=2){     ggplot(Data,aes(x=x,y=y*YMul))+geom_line()}plotfunc(xy)这会导致以下错误:Error in eval(expr, envir, enclos) : object 'YMul' not found好像我不能使用局部变量(或函数参数)aes。可能是由于aes当局部变量超出范围后执行的内容会发生吗?我怎样才能避免这个问题(除了不使用局部变量aes)?
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

由于@Justin:ggplot()aes似乎已认准了YMuldata数据帧的第一个,如果没有找到,然后在全球环境。我喜欢将这些变量添加到数据框中,如下所示,因为它在概念上对我有意义。我也不必担心全局变量的变化会对功能产生意想不到的后果。但所有其他答案也是正确的。所以,请使用适合您的方式。

require("ggplot2")xy <- data.frame(x = 1:10, y = 1:10)xy <- cbind(xy, YMul = 2)ggplot(xy, aes(x = x, y = y * YMul)) + geom_line()

或者,如果您想要示例中的函数:

plotfunc <- function(Data, YMul = 2){
    ggplot(cbind(Data, YMul), aes(x = x, y = y * YMul)) + geom_line()}plotfunc(xy)


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信