我有一个包含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() 解析了多个表达式 回溯:
base :: lapply(...)
global :: FUN(X [[i]],...)
ggplot2 :: aes_string(i)
base :: lapply(...)
ggplot2 ::: FUN(X [[i]],...)
rlang :: parse_expr(x)。
有人知道如何解决此错误吗?
答案 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)