在控制台中逐步运行时,为什么我的函数将“ character(0)”作为输出

时间:2019-09-25 18:23:07

标签: r

我的函数返回“ 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)
}

1 个答案:

答案 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]])