未能根据通过rankall函数的num参数传递的秩对正确的行进行子集划分

未能根据通过rankall函数的num参数传递的秩对正确的行进行子集划分,r,R,这是我在Coursera上为R编程准备的课程。我已经完成了这门课程,但我真的想弄清代码中错误的根源 该数据集的相关字段包含医院、州和三个死亡率指标。需要创建一个函数rankall(outcome,num=“best”),以返回一个数据框,该数据框基于通过num参数传递的排名和通过outcome传递的死亡率度量,显示每个州的医院 当num是一个数值时,我的脚本工作正常。然而,当num为“最佳”或“最差”时,返回的医院不正确 调用tail(rankall(“肺炎”,“最差”),3)时,返回的预期值应

这是我在Coursera上为R编程准备的课程。我已经完成了这门课程,但我真的想弄清代码中错误的根源

该数据集的相关字段包含医院、州和三个死亡率指标。需要创建一个函数
rankall(outcome,num=“best”)
,以返回一个数据框,该数据框基于通过
num
参数传递的排名和通过outcome传递的死亡率度量,显示每个州的医院

num
是一个数值时,我的脚本工作正常。然而,当
num
为“最佳”或“最差”时,返回的医院不正确

调用
tail(rankall(“肺炎”,“最差”),3)
时,返回的预期值应如下所示:

                                 hospital state
WI MAYO CLINIC HEALTH SYSTEM - NORTHLAND, INC    WI

WV                     PLATEAU MEDICAL CENTER    WV

WY           NORTH BIG HORN HOSPITAL DISTRICT    WY
我得到的返回值如下:

                                state
WI "HOLY FAMILY MEMORIAL INC"   "WI" 

WV "THOMAS MEMORIAL HOSPITAL"   "WV" 

WY "SHERIDAN MEMORIAL HOSPITAL" "WY" 
提前感谢任何愿意抽出时间阅读我文章的人

这是我的剧本:

rankall <- function (outcome, num = "best") {

dat <- read.csv("outcome-of-care-measures.csv", colClass = "character", na.strings = "Not Available")

#verify outcome
if (!outcome %in% c("heart attack", "heart failure", "pneumonia")){
    stop("invalid outcome")
}

#verify num
if (!is.numeric(num)) {
    if (is.character(num)) {
        if (!num %in% c("best", "worst")){
            stop("invalid num")
        }
    }
}

col = c("heart attack" = 11, "heart failure" = 17, "pneumonia" = 23)
state = unique(dat$State)
state = state[order(state)]

subdat <- dat[,c(2,7,col)]
names(subdat) <- c("hospital", "state", "death")
subdat$death <- as.numeric(subdat$death)
subdat$hospital <- as.character(subdat$hospital)
subdat <- subdat[complete.cases(subdat$death),]

s = split(subdat, subdat$state)
ls_hospital <- lapply(s, function(x, num) {
    x <- x[order(x$death, x$hospital, na.last = NA),]
    if (num == "best") {return(x$hospital[1])}
    else if (num == "worst") {return(x$hospital[nrow(x)])}
    else {return(x$hospital[num])}
}, num)

ans <- cbind(unlist(ls_hospital), state)
return(ans)

}

rankall只有一个错误。当您对原始文件进行子集设置时
dataframe您的代码是:

subdat <- dat[,c(2,7,col)]

subdat只有一个错误。当您对原始文件进行子集设置时
dataframe您的代码是:

subdat <- dat[,c(2,7,col)]

subdat天哪,这真是个愚蠢的错误。非常感谢你的帮助,警察!天哪,这真是个愚蠢的错误。非常感谢你的帮助,警察!