R中的排序:未找到对象

Zig*_*igu 5 sorting r

我一直在关注有关R数据帧的排序输出的教程:

https://www.statmethods.net/management/sorting.html

我遇到的问题是,当我按照教程中介绍的方式使用命令时,下面的代码会吐出来object not found.我不明白为什么它不能订购数据帧,但打印语句似乎工作正常.

以下是我正在使用的代码:

#hospital name is row 2
#state is row 7
#heart attack is row 11
#heart failure is row 17
#pneumonia is row 23
best <- function(state, outcome){
    colNum <- -1

    ##Semi hard coded :(
    if(outcome == "heart attack"){
        colNum <- 11
    } else if(outcome == "heart failure"){
        colNum <- 17
    } else if(outcome == "pneumonia"){
        colNum <- 23
    } else {
        stop("invalid outcome")
    }

    raw <-  read.csv("outcome-of-care-measures.csv", colClasses = "character")

    if(sum(raw$State == state) <= 0){
        stop("invalid state") 
    }

    rawRelevant <- raw[with(raw, raw[,colNum] != "Not Available" & 
         raw[,7] == state),c(2,colNum)]
    rawRelevant[,2] <- as.numeric(rawRelevant[,2])
    names(rawRelevant) <- c("Hospital", "Rate")
    print(rawRelevant$Hospital)
    print(rawRelevant$Rate)
    data <- rawRelevant[order(Rate,Hospital),]
}
Run Code Online (Sandbox Code Playgroud)

样本输出:

> trial <- best("AK", "heart attack")
[1] "PROVIDENCE ALASKA MEDICAL CENTER" "MAT-SU REGIONAL MEDICAL CENTER"  
[3] "FAIRBANKS MEMORIAL HOSPITAL"      "ALASKA REGIONAL HOSPITAL"        
[5] "ALASKA NATIVE MEDICAL CENTER"    
[1] 13.4 17.7 15.5 14.5 15.7
Error in order(Rate, Hospital) : object 'Rate' not found 
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 15

在R中,您不能将列名称传递给函数,即使它们可能被想象为显然是指正在提取或重新排序的对象中的列.你需要使用"["或"$":

data <- rawRelevant[ order( rawRelevant$Rate, rawRelevant$Hospital), ]
Run Code Online (Sandbox Code Playgroud)

不鼓励使用非特定对象名称,如"数据",尤其是当它们也是R函数的名称时.可能出现的一种情况是,上涨的某人的代码可能有过的attach呼叫rawRelevant,而那可能会出现促进了列名对象的副作用.但是attach由于它不适合编程,仅用于交互式使用,因此引起很多混淆,因此也不鼓励使用它.

请注意,加州大学洛杉矶分校的人使用attach(hsb2).几年前,加州大学洛杉矶分校的统计网站建议反对R而不是SAS和SPSS.现在他们似乎已经出现了,但我认为他们并没有完全"参与该计划".

  • 我读了很多书,作者使用"附着",这就是我找到一本不同的书. (3认同)