Вторая часть курса Университета Джона Хопкинса R Программирование задание курса 3 - это функция, называемая rankhospital()
.
Одна из причин, по которой код в исходном сообщении не работает, заключается в том, что он выполняет прямое сравнение между num
и nrow(DFSlist)
. Когда num == "best"
или num == "worst"
, первое условие в OP возвращает TRUE и возвращает NA вместо первой строки в кадре данных DFSlist
.
Функция rankhospital()
включает два позиционных аргумента, state
, outcome
и один именованный аргумент, num
.
Данные для функции взяты из результатов измерений медицинской помощи в 2012 году в базе данных Hospital Compare, предоставленной Министерством здравоохранения США. Услуги.
Заготовка требуемой функции выглядит так.
rankhospital <- function(state, outcome, num="best") {
# answer goes here
}
Функция должна делать три вещи, в том числе:
- Считывать результаты лечения в больнице data
- Проверка входных аргументов (например, проверка на недопустимое состояние, et c.)
- Обработка данных и возврат больницы n-го ранга в состоянии, указанном в
state
аргумент для одного из трех исходов (инфаркт, сердечная недостаточность или пневмония)
Вопрос в OP спрашивает, как использовать третий аргумент в функции num
, чтобы получить лучший результат, Wor st или числовой c ранг.
После того, как данные были установлены в правильное состояние и отсортированы в соответствии с инструкциями, один из способов обработки аргумента num
следующий:
# sort & subset here
sortedSubset <- # code goes here, includes hospital, state, other variables
# sorted in required order (outcome then hospital name)
# return hospital name, given num argument
if (num == "best") {
return( sortedSubset[1,1])
} else if (num == "worst") {
return(sortedSubset[nrow(sortedSubset),1])
} else if (as.numeric(num) > nrow(sortedSubset)) {
return("NA")
} else return (sortedSubset[as.numeric(num),1])
При правильной работе функция выдает следующие ответы на тестовые примеры, которые предоставляются с инструкциями по назначению.
> source("./rprogramming/rankhospital.R")
> rankhospital("TX","heart failure",4)
[1] "DETAR HOSPITAL NAVARRO"
> rankhospital("MD", "heart attack","worst")
[1] "HARFORD MEMORIAL HOSPITAL"
> rankhospital("MN","heart attack",5000)
[1] "NA"
ПРИМЕЧАНИЕ: Публикация полных решений для программных заданий. Специализация JHU Data Science является нарушением Кодекса чести Coursera. Поэтому я объясняю, где код OP нарушен, не публикуя полное решение для функции rankhospital()
.