如何解决R程序中输出不一致和中断函数执行的问题?

如何解决R程序中输出不一致和中断函数执行的问题?,r,R,编程语言:R x64 3.2.0 披露:这是Coursera提供的R编程课程中问题的一部分。我不熟悉编程语言,并在作业中编写了以下代码: 在这项任务中,我们必须根据给定数据集中提供的信息,找到30天死亡率最低的医院 输入:状态名称(即数据集中提供的首字母缩略词)和“结果”,即疾病名称(心脏病发作、心力衰竭和肺炎) 输出:30天死亡率最低的医院名称(在.csv文件中给出) 检查两条改进代码的建议: 1。您实际上不需要单独的检查功能。您可以将最佳函数中的检查(状态、结果、数据集)行替换为: if(!

编程语言:R x64 3.2.0

披露:这是Coursera提供的R编程课程中问题的一部分。我不熟悉编程语言,并在作业中编写了以下代码:

在这项任务中,我们必须根据给定数据集中提供的信息,找到30天死亡率最低的医院

输入:状态名称(即数据集中提供的首字母缩略词)和“结果”,即疾病名称(心脏病发作、心力衰竭和肺炎)

输出:30天死亡率最低的医院名称(在.csv文件中给出)


检查两条改进代码的建议:

1。您实际上不需要单独的检查功能。您可以将最佳函数中的
检查(状态、结果、数据集)
行替换为:

if(! state %in% dataset$State) stop("invalid state")
if(! outcome %in% c("heart attack", "heart failure", "pneumonia")) stop("invalid outcome")
当在函数中输入无效值时,这两行将停止函数的执行

2.您可以将if-else语句中的代码简化如下:

if(outcome == 'heart attack')
{
  temp <- dataset[dataset$State == state, c(2, 11)]
  temp <- temp[order(temp[,2],temp[,1]),]
  return(as.character(temp[1,1]))
}

在没有数据文件的情况下,我们如何处理这个问题?
if(outcome == 'heart attack')
{
  temp <- dataset[dataset$State == state, c(2, 11)]
  temp <- temp[order(temp[,2],temp[,1]),]
  return(as.character(temp[1,1]))
}
> best("TX", "heart attack")
[1] "CYPRESS FAIRBANKS MEDICAL CENTER"
> best("AZ", "heart attack")
[1] "MAYO CLINIC HOSPITAL"
> best("MD", "heart attack")
[1] "JOHNS HOPKINS HOSPITAL, THE"