构建ggplot图的网格时缺少值

时间:2018-01-21 03:49:14

标签: r ggplot2

我正在尝试构建一个网格。以下是我尝试过的代码:

     install.packages("gridExtra")
     library(gridExtra)
     p1 <- ggplot(aes(x = friend_count), data = pf) + geom_histogram()
     p2 <- p1 + scale_x_log10()
     p3 <- p1 + scale_x_sqrt()
     grid.arrange(p1,p2,p3,ncol = 1)

当我运行时,我收到以下错误:

Error in if (is.waive(data) || empty(data)) return(cbind(data, PANEL = integer(0))) : missing value where TRUE/FALSE needed

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您没有提供数据框,结果证明问题完全可以重现:

ggplot(aes(x = friend_count), data = pf) + geom_histogram()
# Error in if (empty(data)) return(cbind(data, PANEL = factor())) : 
# missing value where TRUE/FALSE needed 

现在有数据框:

pf <- data.frame(friend_count = rpois(1000, 10))
ggplot(aes(x = friend_count), data = pf) + geom_histogram()

enter image description here

也许您打算写data = df而不是data = pf?在基数R中,pf是一个函数,当一个函数提供一个函数代替数据时,就会出现错误:

ggplot(function() {}, aes(x)) + geom_histogram()
# Error in if (empty(data)) return(cbind(data, PANEL = factor())) : 
# missing value where TRUE/FALSE needed 

在任何一种情况下,这都与gridExtragrid.arrange无关。