【问题标题】:R program for returning value from a vector through indexR程序通过索引从向量返回值
【发布时间】:2015-07-06 01:51:37
【问题描述】:

我写了一个函数来返回医院名称以获得疾病的最低死亡率,但它没有给我想要的输出,请任何人检查代码并告诉我其中有什么问题?

best <- function(state, outcome) {
tab <- read.csv("outcome-of-care-measures.csv")
attack <- as.numeric(tab[,11])
failure <- as.numeric(tab[,17])
pneumonia <- as.numeric(tab[,23])
hospitals <- as.vector(tab[,2])

diseases <- c("heart attack", "heart failure","pneumonia")

if(!state %in% tab$State){
    stop("invalid state")

}
else if(!outcome %in% diseases){
    stop("invalid outcome")
}
else{
    if(outcome == diseases[1]){

        min <- min(attack, na.rm = TRUE)
        index <- which(attack == min)
        hospitalname <- hospitals[index]
    }
}

hospitalname
}

【问题讨论】:

  • 如果没有一些示例输入和输出,很难诊断您的问题。我认为您应该能够使用dplyrfilter 函数来获得一些工作。

标签: r vector indexing


【解决方案1】:

else 需要使用稍有不同。它不能开始一个新行,而是让每个 else 语句像......

if(){
blah...blah...
} else {}

这应该会有所帮助。如果没有测试脚本和对意图的描述,就很难提供帮助。

【讨论】:

  • 我试过了,但我总是得到输出为 [1] "NYU HOSPITALS CENTER"。 ## 即使我在函数 best 的参数中更改状态名称
  • 我需要返回心脏病死亡率最低的医院名称,Hospital.name 是我表中的第二列,心脏病死亡率是第 11 列
猜你喜欢
  • 2019-07-10
  • 1970-01-01
  • 2012-07-17
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多