Ошибка при агрегировании фрейма данных для стендовой ошибки среднего значения: «Ошибка в var (if (is.vector (x) || is.factor (x))» - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть набор данных, который я пытаюсь объединить, чтобы найти среднее значение и стандартную ошибку среднего (SEM) в R версии 3.6.0. У меня есть три генотипа (типа), на которых я провел измерения, поэтому мне нужно взять среднее и SEM типа 1, 2 и 3.

Здесь определена функция SEM:

sem <- function(x) sd(x)/sqrt(length(x))

Вот данные:

data <- data.frame(
  type = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 1, 3, 3, 3, 1, 3, 
           2, 2, 1, 1, 1, 2, 2, 1, 3, 3, 3, 3, 2, 1, 2, 1),
  measurement = c(12, 14, 13, 13, 13, 12, 12, 14, 14, 12, 13, 14, 15, 14, 15, 
                  13, 15, 14, 15, 13, 13, 13, 13, 13, 13, 13, 12, 15, 12, 12, 15, 
                  13, 14, 13, 14, 12)
)

Агрегирование для среднего значения работает просто отлично:

mean <- aggregate(data, by=list(data$type), mean)

Однако, когда я пытаюсь агрегировать SEM, я получаю ошибку , Я был в состоянии успешно реализовать это раньше с этим точным кодом. Что я могу сделать, чтобы решить эту проблему? Я перезапустил сессию R несколько раз; он просто не хочет работать.

sem <- aggregate(data, by=list(data$type), sem)

#Resulting error:
Error in var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) : 
  Calling var(x) on a factor x is defunct.
  Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
...