在aes內(nèi)的局部變量aes當(dāng)我用ggplot繪圖時(shí),我正在嘗試使用局部變量。這是我的問題歸結(jié)為本質(zhì):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)這會(huì)導(dǎo)致以下錯(cuò)誤:Error in eval(expr, envir, enclos) : object 'YMul' not found好像我不能使用局部變量(或函數(shù)參數(shù))aes。可能是由于aes當(dāng)局部變量超出范圍后執(zhí)行的內(nèi)容會(huì)發(fā)生嗎?我怎樣才能避免這個(gè)問題(除了不使用局部變量aes)?
3 回答

絕地?zé)o雙
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
由于@Justin:ggplot()
的aes
似乎已認(rèn)準(zhǔn)了YMul
在data
數(shù)據(jù)幀的第一個(gè),如果沒有找到,然后在全球環(huán)境。我喜歡將這些變量添加到數(shù)據(jù)框中,如下所示,因?yàn)樗诟拍钌蠈ξ矣幸饬x。我也不必?fù)?dān)心全局變量的變化會(huì)對功能產(chǎn)生意想不到的后果。但所有其他答案也是正確的。所以,請使用適合您的方式。
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()
或者,如果您想要示例中的函數(shù):
plotfunc <- function(Data, YMul = 2){ ggplot(cbind(Data, YMul), aes(x = x, y = y * YMul)) + geom_line()}plotfunc(xy)
- 3 回答
- 0 關(guān)注
- 546 瀏覽
添加回答
舉報(bào)
0/150
提交
取消