«Ошибка в [...]: попытка выбрать более одного элемента в vectorIndex» при попытке запустить lapply (). Может кто-нибудь работать со мной, чтобы отладить это? - PullRequest
2 голосов
/ 24 апреля 2020

У меня в настоящее время есть эта функция, которая возвращает среднюю ожидаемую продолжительность жизни данного года:

get_col_mean <- function(data_frame, column_name){
  return(mean(data_frame[[column_name]], na.rm = TRUE))
}

Пример ее использования, если я должен был запустить код:

test2 <- get_col_mean(life_exp, "X2000")

Я получаю 67,486 , что является средней продолжительностью жизни в мире в 2000 году.

Теперь я пытаюсь использовать следующий код:

col_means <- lapply(life_exp, get_col_mean, paste("X", 1800:2100))

Для составьте список средств ожидаемой продолжительности жизни на каждый год. Однако, когда я пытаюсь запустить эту строку кода, она выдает мне ошибку:

Error in data_frame[[column_name]] : attempt to select more than one element in vectorIndex

Может кто-нибудь помочь мне понять, что я делаю неправильно? Также я знаю, что я могу решить эту проблему намного проще, используя разные методы (которые не требуют моей функции), но ради своего назначения я должен использовать свою функцию для решения этой проблемы. Назначение требует, чтобы я использовал apply (), lapply () или sapply () для решения этой проблемы, поэтому, если apply () или sapply () будет работать лучше, чем lapply (), дайте мне знать об этом тоже. Кроме того, если единственный способ решить эту проблему - это каким-то образом изменить мою функцию (моя проблема - проблема, а не мой код lapply ()), у меня все в порядке.

Я пытаюсь прикрепить картинку того, как выглядит life_exp data.frame, но я не могу найти какой-либо способ сделать это (впервые используя этот веб-сайт). В попытке объяснить это, все строки представляют страну, а все столбцы представляют год (X1900 - это 1900 год). Строка «Афганистан» + колонка «X1900» даст число, представляющее ожидаемую продолжительность жизни человека в Афганистане в 1900 году.

1 Ответ

0 голосов
/ 24 апреля 2020

Проблема в коде OP основана на цикле data.frame, а не на именах столбцов.

lapply(paste0("X", 1800:2100), function(x) get_col_mean(life_exp, x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...