Я пытаюсь просмотреть список данных о больницах в каждом штате и извлечь больницу, которая соответствует указанному ранжированию (аргумент num). Мне нужно вернуть фрейм данных с двумя столбцами, больницами и штатами, в котором указана больница в каждом штате с указанным ранжированием для указанного результата, поэтому должно быть 50 строк.
Проблема в том, что я получаю возвращенный фрейм данных только с одной строкой, содержащей данные из последнего состояния (WY).
Я знаю, что мой код отлично работает для того, что я хочу, пока не конкатенация больниц и штатов векторов персонажей.
rankall <- function(outcome, num = "best") {
data <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
newframe <- as.data.frame(cbind(data[, 2], data[, 7], data[, 11], data[, 17], data[, 23]), stringsAsFactors = F)
colnames(newframe) <- c("hospital", "state", "heart attack", "heart failure", "pneumonia")
splitstates <- split(newframe, newframe$state)
if (sum(outcome == "heart attack" | outcome == "pneumonia" | outcome == "heart failure") == 0) {
stop("invalid outcome")
}
hospitals <- character()
states <- character()
for(i in length(splitstates)) {
orderoutcome <- order(splitstates[[i]][, eval(outcome)], splitstates[[i]][, "hospital"], na.last = TRUE)
if(num == "best") {
num2 <- 1
rank <-orderoutcome[num2]
} else if(num == "worst") {
num2 <- length(orderoutcome)
rank <- orderoutcome[num2]
} else {
rank <- orderoutcome[num]
}
result <- splitstates[[i]][rank, "hospital"]
hospitals <- c(hospitals, result)
states <- c(states, splitstates[[i]][1, "state"])
}
return <- data.frame(hospitals, states)
print(return)
}
Ожидается: фрейм данных со строкой для каждого состояния
Факт: кадр данных с одной строкой, соответствующей последнему состоянию (WY)