«Ошибка: неожиданный символ» для функции, которую я определяю, но не могу определить источник ошибки - PullRequest
0 голосов
/ 17 января 2019

Заранее извиняюсь за вопрос новичка, но я новичок с R на данный момент. Я определяю функцию для запуска сводной статистики на фрейме данных, она выглядит следующим образом:

sumstats = function(y) {
  sumst = sapply(y, function(x) {
    sumstat = c(
      mean(x, na.rm = TRUE),
      median(x, na.rm = TRUE),
      sd(x, na.rm = TRUE),
      min(x, na.rm = TRUE),
      max(x, na.rm = TRUE)
    ) names(sumstat) = c("Mean", "Median", "SD", "Min", "Max") sumstat
  }) aperm(sumst)
}

Однако я продолжаю получать следующую ошибку, указывающую, что что-то не так с тем, как я хочу определить имена моих разных столбцов:

Error: unexpected symbol in:
"      max(x, na.rm = TRUE)
    ) names"

Не могли бы вы сказать, что мой синтаксис выдает ошибку?

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вы запускаете функцию names в той же строке, где c end. Просто измените форматирование вашего кода.

Обратите внимание, что более безопасно использовать <- для присвоения объектов объекту. = используется для передачи значений аргументам функции.

sumstats <- function(y) {
  sumst <- sapply(
    y, 
    function(x) {
      sumstat <- c(
        mean(x, na.rm = TRUE),
        median(x, na.rm = TRUE),
        sd(x, na.rm = TRUE),
        min(x, na.rm = TRUE),
        max(x, na.rm = TRUE)
      ) 
      names(sumstat) <- c("Mean", "Median", "SD", "Min", "Max") 
      return(sumstat)
    }
  ) 
  aperm(sumst)
}
0 голосов
/ 17 января 2019

необходимо добавить новую строку между) для sumstat и) для имен (sumstat), например

sumstats = function(y) {
  sumst = sapply(y, function(x) {
    c(
      mean(x, na.rm = TRUE),
      median(x, na.rm = TRUE),
      sd(x, na.rm = TRUE),
      min(x, na.rm = TRUE),
      max(x, na.rm = TRUE)
    )
    names(sumstat) = c("Mean", "Median", "SD", "Min", "Max")
    sumstat
  })
  aperm(sumst)
}

Вы также можете назвать элементы в векторе и вообще пропустить имена (sumstat)

sumstats = function(y) {
  sapply(y, function(x) {
    sumstat = c(
      Mean = mean(x, na.rm = TRUE),
      Median = median(x, na.rm = TRUE),
      sd = sd(x, na.rm = TRUE),
      Min = min(x, na.rm = TRUE),
      Max = max(x, na.rm = TRUE)
    )
  })
  aperm(sumst)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...