有时,在我编写一个函数并调用它之后,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]为了最低限度的结果。
哪一部分错了?谢谢!
答案 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)
}
}