gpt4 book ai didi

r - R : Object not found 中的排序

转载 作者:行者123 更新时间:2023-12-04 10:07:19 24 4
gpt4 key购买 nike

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

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

我遇到的问题是,当我按照教程中介绍的方式使用 order 时,下面的代码会吐出 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),]
}

示例输出:
> 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

最佳答案

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

data <- rawRelevant[ order( rawRelevant$Rate, rawRelevant$Hospital), ]
不鼓励使用非特定对象名称,如“数据”,特别是当它们也是 R 函数的名称时,如 datadf .可能出现的一种情况是,在某人的代码中更高的位置可能存在 attach调用 rawRelevant ,这会产生将列名提升为对象的副作用。但是 attach造成很多困惑,因为它不是用于编程,仅用于交互式使用,因此也不鼓励使用它。
请注意,加州大学洛杉矶分校的人使用了 attach(hsb2) .几年前,加州大学洛杉矶分校的统计网站建议不要使用 R,而不是 SAS 和 SPSS。现在他们似乎已经出现了,但我不认为他们真的完全“与计划”。

关于r - R : Object not found 中的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com