ошибка в порядке () длины аргумента отличаются R - PullRequest
0 голосов
/ 14 сентября 2018

Я просмотрел все сообщения, которые мог найти в аргументах dplyr ::range () или order (), длины ошибок отличаются, но не нашел объяснения.

Я пытаюсь сделать функцию лучше (), который может вернуть наименьшее номинальное значение из таблицы данных о результатах госпитализации (dfout).Когда я копирую код прямо в R, он работает без ошибок, возвращая название больницы с самым низким уровнем смертности.Только когда я вызываю его как функцию, он говорит: «Ошибка в порядке (состояние, результат, больница): длина аргументов различается»

Функция: (обратите внимание, я использовал заглавные буквы для имен столбцов и не заглавные для переменных функций)

best <- function(state, outcome){

colnames(dfout) <- c("Hospital", "State", "Heartattack", "Heartfailure", "Pneumonia")

##Return hospital name with lowest 30 day mortality rate

arranged <- arrange(dfout, State, outcome, Hospital)    ## arrange hospitals by state, mortality rate in the specified outcome in best() and alphabetically for the ties.
arranged1 <- arranged[arranged$State == state,]         ## take the part of the ordered list where state = the state specified in best()
arranged1$Hospital[1]

Теперь, если я позвоню лучше («TX», Heartattack), я получу «Ошибка в порядке (состояние, результат, больница): длина аргумента различается», но если я просто запустите код и заменитесостояние и результат с "TX" и Heartattack я получаю больницу, как это

##Return hospital name with lowest 30 day mortality rate

arranged <- arrange(dfout, State, Heartattack, Hospital)    ## arrange hospitals by state, mortality rate in the specified outcome in best() and alphabetically for the ties.
arranged1 <- arranged[arranged$State == "TX",]         ## take the part of the ordered list where state = the state specified in best()
arranged1$Hospital[1]
[1] "CYPRESS FAIRBANKS MEDICAL CENTER"

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

1 Ответ

0 голосов
/ 14 сентября 2018

Вам необходимо оценить параметр outcome внутри функции, поэтому R будет интерпретировать его как переменную, а не как текст

arranged <- arrange(dfout, State, eval(parse(text=outcome)), Hospital)

Теперь

   # > best("TX","Heartattack")
   # [1] CYPRESS FAIRBANKS MEDICAL CENTER
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...