从R中的函数返回值

时间:2016-05-14 10:46:22

标签: r

有时,在我编写一个函数并调用它之后,R studio控制台中的结果如下:

> rankhospital("NC", "heart attack", "best")

没有返回任何内容,也没有发生错误。

代码:

rankhospital<-function(state, outcome, num="best")
 {
  a<-read.csv("outcome-of-care-measures.csv",na.string="Not Available")
  b<-subset(a,a[,7]==state)

  if(outcome=="heart attack")
  {
   conv<-as.numeric(b[,11])
   min_num<-min(conv,na.rm = TRUE)
   min_row<-which(b[,11]==min_num)
   hosname<-b[min_row,2]
   hosname
  }

  if(outcome=="heart failure")
  {
   conv1<-as.numeric(b[,17])
   min_num1<-min(conv1,na.rm = TRUE)
   min_row1<-which(b[,17]==min_num1)
   hosname1<-b[min_row1,2]
   hosname1
  }

  if(outcome=="heart pneumonia")
   {
    conv2<-as.numeric(b[,23])
    min_num2<-min(conv2,na.rm = TRUE)
    min_row2<-which(b[,23]==min_num2)
    hosname2<-b[min_row2,2]
    hosname2
   }
}

代码非常简单。在用户输入状态[,7]和结果[,11],[,17],[,23]之后,然后找到状态结果的最小结果值,然后返回医院名称[,2]为了最低限度的结果。

哪一部分错了?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用return(hosname)return(hosname1)return(hosname2)返回值。

rankhospital<-function(state, outcome, num="best")
{
    a<-read.csv("outcome-of-care-measures.csv",na.string="Not Available")
    b<-subset(a,a[,7]==state)

    if(outcome=="heart attack")
    {
        conv<-as.numeric(b[,11])
        min_num<-min(conv,na.rm = TRUE)
        min_row<-which(b[,11]==min_num)
        hosname<-b[min_row,2]
        return(hosname)
    }

    if(outcome=="heart failure")
    {
        conv1<-as.numeric(b[,17])
        min_num1<-min(conv1,na.rm = TRUE)
        min_row1<-which(b[,17]==min_num1)
        hosname1<-b[min_row1,2]
        return(hosname1)
    }

    if(outcome=="heart pneumonia")
    {
        conv2<-as.numeric(b[,23])
        min_num2<-min(conv2,na.rm = TRUE)
        min_row2<-which(b[,23]==min_num2)
        hosname2<-b[min_row2,2]
        return(hosname2)
    }
}