我的函数返回“ character(0)”,但我不知道为什么。如果我在控制台中逐步执行此操作,则结果是正确的,但执行功能时却不正确。
我得到的建议如下: 编写一个名为best的函数,该函数带有两个参数:状态和结果的2个字符的名称。该函数返回该州在指定结局(死亡率)下死亡率最低的医院名称。结果可能是“心脏病发作”,“心力衰竭”或“肺炎”之一。在确定排名时,应将没有特定结局数据的医院从医院中排除。
我得到的代码如下:
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)
}
答案 0 :(得分:1)
问题是
min <- which.min(hospital_data$outcome)
和'outcome'作为字符串传递,但实际上只是使用'outcome'而不是函数中传递的值。它在data.frame中查找“结果”列,但找不到。
df1 <- data.frame(col1 = 1:5)
outcome <- 'col1'
df1$outcome
#NULL
df1[[outcome]]
使用[[
代替$
min <- which.min(hospital_data[[outcome]])