Предоставление элемента из списка фреймов данных в качестве входных данных для аргумента aes () ggplot2 - PullRequest
0 голосов
/ 03 апреля 2019

В настоящее время я пытаюсь построить несколько линейных графиков (по одному для каждой переменной) с помощью ggplot2.Мои данные в длинном формате, и я использовал функцию summarySE, определенную на этой странице:

http://www.cookbook -r.com / Графики / Plotting_means_and_error_bars_ (ggplot2) /

чтобы получить сводку по переменным во времени переменным, возвращая data.frame с такими вещами, как событие measuremnt, среднее значение для случая и группы и т. д. Выглядит это так для каждой переменной.

TIME Treatment2   N Procrastination        sd         se        ci
 0          0    214       2.174342 0.6454869 0.06045539 0.1197730
 0          1    206       2.174528 0.6442694 0.06257698 0.1240786
 0          2    193       2.115591 0.5767331 0.05980444 0.1187768
 1          0    191       2.428571 0.6818945 0.07148197 0.1420114
 1          1    198       2.466837 0.7650027 0.07727694 0.1533733
 1          2    182       2.184451 0.6437693 0.07109242 0.1414516
 2          0    143       2.395349 0.6851585 0.10448569 0.2108607
 2          1    154       2.391204 0.8313032 0.11312604 0.2269021
 2          2    145       2.375000 0.9784612 0.14586039 0.2939623

Сводка для каждогопеременная служит в качестве входных данных в ggplot, и я получаю ее, если я использую фрейм данных напрямую и передаю аргументы aes () вручную.

#working example graph with procrastination

proc_groups <- summarySE(ESE1718_clean_long, 
                         measurevar="Procrastination", 
                         groupvars=c("TIME", "Treatment2"), 
                         na.rm=TRUE)

pd <- position_dodge(0.05)

ggplot(proc_groups, 
       aes(x=TIME, y=Procrastination, color=as_factor(Treatment2))) + 
  geom_errorbar(aes(ymin=Procrastination-ci, ymax=Procrastination+ci), 
                width=.1, position=pd) +
  geom_line(position=pd) +
  geom_point(position=pd) +
  scale_x_continuous(breaks=c(0, 1, 2), labels=c("T0", "T1", "T2"))  +
  theme_classic()+
  labs(color=as_factor("Treatment Condition"))+
  xlab("Measurement occasions")+
  ylab("Procrastination")+
  ggtitle("Development of Procrastination per treatment condition")

Однако, поскольку у меня много переменныхЯ создал цикл для назначения сводной таблицы для каждой переменной списку.

Я пытаюсь передать это на свой ggplot (см. Код с одним примером из списка)

    ggplot(summary_list[[15]], 
           aes(x=TIME, y=summary_list[[15]][4], color=as_factor(Treatment2))) + 
           width=.1, position=pd) +
    geom_line(position=pd) +
    geom_point(position=pd) + 
    scale_x_continuous(breaks=c(0, 1, 2), labels=c("T0", "T1", "T2"))  +
    theme_classic()+
    labs(color=as_factor("Treatment Condition"))+
    xlab("Measurement occasions")+
    ylab(colnames(summary_list[[15]][4]))+
    ggtitle(paste0("Development of ", 
                   colnames(summary_list[[15]][4]), 
                   " by treatment condition"))

НоЯ получаю следующую ошибку:

Не знаю, как автоматически выбрать масштаб для объекта типа data.frame.По умолчанию для непрерывного.Ошибка в is.finite (x): метод по умолчанию не реализован для типа «список»

Проверка каждой ссылки на список, в котором я свел причину к аргументу aes (), где я заменил measurevar="Procrastination"с y=summary_list[[15]][4]

Остальное работает.

Как я могу это исправить (ссылаясь на список?)

Это позволило бы написать второй цикл, которыйперебирает каждую сводку в моем списке и создает график для каждой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...