2017-07-13 33 views
0

我希望我能得到一個上下文的線索,可能會出現錯誤,但不提供數據幀,但可以在必要時使用,但最終我想利用lapply在多個Y和相同的X上創建多個盒形圖,但會出現以下錯誤,但被稱爲絕對是我CMrecruitdat data.frame:R GGPLOT2 lapply和函數沒有找到對象?

錯誤aes_string(X =命名,Y = RecVar,填寫=命名): 對象 '稱爲' 未找到

RecVar <- CMrecruitdat[,c("Req.Open.To.System.Entry", "Req.Open.To.Hire", "Tenure")] 

BP <- function (RecVar){ 
    require(ggplot2) 
    ggplot(CMrecruitdat, aes_string(x=Termed, y=RecVar, fill=Termed))+ 
    geom_boxplot()+ 
    guides(fill=false) 
} 

lapply(RecVar, FUN=BP) 

回答

1

如果使用aes_string,你應該傳遞字符串而不是向量,併爲所有字段使用字符串。

RecVar <- CMrecruitdat[,c("Termed", "Req.Open.To.System.Entry", "Req.Open.To.Hire", "Tenure")] 

BP <- function (RecVar){ 
    require(ggplot2) 
    ggplot(RecVar, aes_string(x="Termed", y=RecVar, fill="Termed"))+ 
    geom_boxplot()+ 
    guides(fill=false) 
} 

lapply(names(RecVar), FUN=BP) 
+0

所以,如果我只是使用aes它會工作? –

+0

不是。因爲'aes()'需要符號,所以它不會評估這些參數。如果你想編寫調用'ggplot'的函數,你最好堅持使用'aes_string()'。 – MrFlick

+0

它實際上與aes ...一起工作,但沒有將名稱讀入Y軸,而是重複了三個「RecVar」,但它確實創建了三個。 –