考慮以下兩個功能:函數ggplot:什麼時候它不識別參數,什麼時候它?
library(ggplot2)
testdata <- as.data.frame(cbind(rep(c(1, 4), each = 50), rbinom(100, 50, .5)))
names(testdata) <- c("group", "value")
plotfun1 <- function(color) {
ggplot(data = testdata, aes(x = factor(group, levels = c(0: 4)), y = value)) +
geom_boxplot(color = color)
}
plotfun2 <- function(number) {
ggplot(data = testdata, aes(x = factor(group, levels = c(0: number)), y = value)) +
geom_boxplot(color = 'red')
}
Plotfun1完美的作品,呼籲
plotfun1('red')
產生了兩個漂亮的紅盒形圖。然而主叫
plotfun2(4)
產生了錯誤消息:
出錯因子(組,水平= C(0:數)):對象 '編號' 未找到
顯然在某些情況下ggplot是無法「找到」函數的參數,在某些情況下也是如此。這裏發生了什麼?
PS我知道有一個簡單的解決辦法:打印時
plotfun3 <- function(number) {
plotdata <- testdata
plotdata$group <- factor(plotdata$group, levels = c(0: number))
ggplot(data = plotdata, aes(x = group, y = value)) +
geom_boxplot(color = 'red')
}
我只是想了解是怎麼回事)
與http://stackoverflow.com/q/5106782/946850類似,但不是重複的。 – krlmlr
啊是的我發現這個時只發現了其他問題。顯然,這些函數之間的區別在於,在plotfun1中我們稱aes中的參數? – Vincent
是的,這可能是原因,但原因在於'ggplot'的內部。 – krlmlr