Почему моя функция получает "character (0)" как вывод, когда она работает шаг за шагом в консоли - PullRequest
1 голос
/ 25 сентября 2019

Моя функция возвращает «символ (0)», и я не могу понять, почему.Если я делаю это шаг за шагом в консоли, результат будет правильным, но не тогда, когда я выполняю функцию.

У меня есть следующее задание: написать функцию под названием best, которая принимает два аргумента: двухсимвольное имя состояния и результат.Функция возвращает название больницы, которая имеет самый низкий уровень смертности для указанного результата (уровень смертности) в этом штате.Результатами могут быть «сердечный приступ», «сердечная недостаточность» или «пневмония».Больницы, у которых нет данных о конкретном результате, должны быть исключены из набора больниц при определении рейтинга.

У меня есть следующий код:

best <- function(state, outcome) {
        ## Read outcome data
        data <- read.csv("outcome-of-care-measures.csv", colClasses = "character", na.strings = "Not Available")
        data <- data[c(2, 7, 11, 17, 23)]
        names(data)[c(3:5)] <- c("heart attack", "heart failure", "pneumonia")

        ## Check that state and outcome are valid
        if (!state %in% unique(data$State)){
                stop("Invalid State")
        }
        if (!outcome %in% c("heart attack", "heart failure", "pneumonia")) {
                stop("Invalid outcome")
        }

        ## Return hospital name in that state with lowest 30-day death
        hospital_data <- data[data$State == state, ]
        min <- which.min(hospital_data$outcome)
        hospital_name <- hospital_data[min, 1]
        print(hospital_name)
}

1 Ответ

1 голос
/ 25 сентября 2019

Проблема в том, что

min <- which.min(hospital_data$outcome)

, и «результат» передается в виде строки, но он буквально использует «результат» вместо значения, переданного в функции.Он ищет столбец 'result' в data.frame и не может его найти.

df1 <- data.frame(col1 = 1:5)
outcome <- 'col1'
df1$outcome
#NULL
df1[[outcome]]

Используйте [[ вместо $

min <- which.min(hospital_data[[outcome]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...