& ldquo; Ошибка в анализе (text = x) & rdquo; при запуске for-loop с ggplot2

В Excel 2013 необходимо выполнить следующие шаги:

  • выбрать данные и преобразовать в таблицу ( Вставка -> Таблица )
  • вызов Запрос Редактор таблицы (Power Query -> From Table)
  • выберите столбцы, содержащие годы
  • в контекстном меню, выберите « Unpivot Columns » - команда.

Служба поддержки: столбцы Unpivot (Power Query)

0
задан Nick Dylla 14 July 2018 в 00:09
поделиться

1 ответ

У вас не должно быть пробелов в именах столбцов. Имена столбцов должны быть действительными именами переменных для всех сопоставлений столбцов для работы. Лучше не менять имена столбцов, просто иметь отдельный вектор меток, которые вы хотите использовать.

Вот данные с оригинальными именами

shorty_ks <- structure(list(BASEmetab = c(0.11409531425, 0.0716102175833333, 
0.09953587425, 0.248902252416667, 0.114263822125, 0.1530849725
), kn2o.Churchill = c(0.0354781748244595, 0.0511254328535874, 
0.0351401193406382, 0.0432339955562482, 0.0498228392372491, 0.0342448057447306
), kn2o.Oconnor = c(0.0336761898724322, 0.0447691111499001, 0.0333255117582665, 
0.0359191513743014, 0.043530785730249, 0.0324037193153706), kn2o.Owens = c(0.0585830015888074, 
0.10004459351892, 0.0583011578948275, 0.102948639254916, 0.0987018589393615, 
0.0575186770232462)), .Names = c("BASEmetab", "kn2o.Churchill", 
"kn2o.Oconnor", "kn2o.Owens"), row.names = c(NA, 6L), class = "data.frame")

Затем просто создайте вектор из «симпатичных» имен

col_labels <- c(
  kn2o.Churchill="Churchill et al. (1962)", 
  kn2o.Oconnor="OConnor and Dobbins (1958)", 
  kn2o.Owens="Owens (1964)")

Тогда вы можете использовать это для меток в цикле

colNames <- names(shorty_ks)[2:4]
for(i in colNames){
  plt <- ggplot(shorty_ks, aes_string(x=i, y = "BASEmetab")) + 
    xlab(bquote(. (col_labels[i])~k~(h^-1)))+ 
    ylab(expression(BASEmetab~k~(h^-1)))+
    theme_gray()+
    geom_smooth(method="lm",se=FALSE) + geom_point() +
    scale_color_brewer(palette="Dark2")
  print(plt)
}
1
ответ дан MrFlick 17 August 2018 в 12:05
поделиться
  • 1
    Фантастично. Это сработало. Единственное, что мне пришлось изменить, было y = "BASEmetab" - y = BASEmetab (не нужны кавычки). Благодаря! – Nick Dylla 14 July 2018 в 00:22
  • 2
    Но вы поместили его в aes_string(), который ожидает значения символа, а не буквальный вектор или символ. – MrFlick 14 July 2018 в 00:26
  • 3
    Ну, это сработало, когда я удалил кавычки и не сделал, когда оставил цитаты. Я получил это сообщение, когда я запустил его с кавычками Error: Aesthetics must be either length 1 or the same as the data (42): x, y – Nick Dylla 14 July 2018 в 00:53
  • 4
    О, эта колонка все еще называется «K.mean.hr». или это "BASEmetab" в вашей таблице shorty_ks? Он должен соответствовать любому имени столбца. – MrFlick 14 July 2018 в 00:55
  • 5
    – Nick Dylla 14 July 2018 в 01:00
Другие вопросы по тегам:

Похожие вопросы: