сообщение об ошибке при выполнении итерации с ggplot2: проанализировано более одного выражения

У меня есть фрейм данных с 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. глобальный::FUN(X[[i]], ...)

  3. ggplot2::aes_string(я)

  4. base::lapply(...)

  5. ggplot2:::FUN(X[[i]], ...)

  6. rlang::parse_expr(x).

У кого-нибудь есть идеи, как исправить эту ошибку?


person jiyuna ben    schedule 06.12.2019    source источник
comment
Не могли бы вы предоставить воспроизводимый пример? Например, если вы предоставите часть своих данных, я могу запустить код на своей машине и помочь вам :D   -  person luizgg    schedule 07.12.2019


Ответы (1)


Для меня имена столбцов моего фрейма данных содержали нежелательные символы, такие как точки с запятой и пробелы. Чтобы решить эту проблему, я очистил имена столбцов перед передачей их в виде строк в aes_string(). Вы можете сделать это с помощью функции make.names() base r или с помощью 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)

person Olabiyi Obayomi    schedule 01.10.2020