ggplot2进行迭代时出现错误消息:“已解析多个表达式”

时间:2019-12-06 16:45:58

标签: r ggplot2 geom-bar

我有一个包含8个变量的数据框,我尝试使用以下脚本在一页中绘制3个变量(离散变量)的条形图:

lyst <- list(colnames(mydata[3:5]))
pl<-lapply(lyst, function(i)ggplot(mydata, aes_string(i)) + geom_bar(aes_string(fill=i)))
marrangeGrob(pl, nrow=2, ncol=2)

起初它起作用了,但是现在我收到以下错误消息:  错误:解析了多个表达式 致电rlang::last_error()查看回溯。

  

rlang :: last_error()      解析了多个表达式   回溯:

     
      
  1. base :: lapply(...)

  2.   
  3. global :: FUN(X [[i]],...)

  4.   
  5. ggplot2 :: aes_string(i)

  6.   
  7. base :: lapply(...)

  8.   
  9. ggplot2 ::: FUN(X [[i]],...)

  10.   
  11. rlang :: parse_expr(x)。

  12.   

有人知道如何解决此错误吗?

1 个答案:

答案 0 :(得分:0)

对我来说,数据框的列名包含不需要的字符,例如分号和空格。为了解决此问题,我在将列名作为字符串传递给aes_string()之前清除了列名。您可以在运行代码之前使用base r的make.names()函数或使用janitor::clean_names()来完成此操作。

解决方案:

# Using base r:

colnames(mydata) <- make.names(colnames(mydata))

# Using Janitor:

install.packages(janitor) # If not already installed

mydata <- janitor::clean_names(mydata)