我正在研究R中的功能“医院”,以按州的结果对医院进行排名。它包含三个参数:1)状态,2)结果(“心脏病”,“心力衰竭”或“肺炎”),3)num:该状态下该州医院的排名。例如,呼叫:
rankhospital(“ MD”,“心力衰竭”,5)
或
rankhospital(“ MD”,“心力衰竭”,“最佳”)。 “最佳”意味着排名第一。
我尝试将“ num”分为两类:1)字符串(“ best”或“ worst”)和2)整数。当我运行代码时,在输入“ num”作为整数时,会遇到“错误:位置1处的错误:不正确的大小(1),预期:194”。
我试图找到错误的含义,但是只找到简短的介绍,例如:
“ 194:预期为asm字符串”
,我找不到更多详细信息。我希望当我输入“ num”作为字符串时,因为有引号,所以它可以自动识别为字符。由于没有引号,因此该数字可以被视为整数。也许我错了,但我不知道如何解决。期待您的见解。谢谢。
这是我的代码:
data <- read.csv("outcome-of-care-measures.csv", na.strings = "Not Available", stringsAsFactors=FALSE)
# select column by position
df_selected <- data[c(2, 7, 11, 17, 23)]
df_new <- na.omit(df_selected)
# rename columns
names(df_new) <- c("Hospital.Name", "State", "heart attack", "heart failure", "pneumonia")
rankhospital <- function(state, outcome, num = "best") {
# select related outcome: eg. heart attack, or heart failure, or pneumonia
dat <- select(df_new, c("Hospital.Name", "State", outcome))
# filter data of a specific state
state_data <- filter(dat, State == state)
# sort the data according to the outcome which are rates
data_arranged <- arrange(state_data, outcome)
if(num == "best") {
return(data_arranged[1,1])
}
if(num == "worst") {
return(data_arranged[nrow(data_arranged), 1])
}
if(num <= nrow(data_arranged)) {
return(data_arranged[num, 1])
}
if(num > nrow(data_arranged)) {
return(stop("NA"))
}
}