检查R中函数参数的有效性

时间:2014-12-28 12:18:14

标签: r

我想创建一个首先检查以确保传递给该函数的参数有效的函数。我的特定函数有两个参数,我已成功检查第一个参数的有效性。但是,检查第二个参数给我带来了麻烦。

我想检查state的输入是state.abb的成员。这似乎工作正常。

我还想检查outcome的输入是"heart attack", "heart failure", "pneumonia"的成员。这不能正常工作。

到目前为止,这是我的代码:

best <- function(state, outcome){

  ## Read outcome data

  outcome <- read.csv("outcome-of-care-measures.csv", colClasses = "character")

  ## Check that state and outcome are valid

  if (!any(state == state.abb)){
    stop("invalid state")
  }
  if (!any(outcome == c("heart attack", "heart failure", "pneumonia"))){
    stop("invalid outcome")
  }

  ## The function will do other things after this is sorted out.

}

当我输入错误状态缩写时,该函数给出了正确的错误:

> best("FF", "heart failure")
Error in best("FF", "heart failure") : invalid state

现在当我输入正确状态缩写和错误的结果时,该函数似乎给出了正确的错误:

> best("CA", "this is wrong")
Error in best("CA", "this is wrong") : invalid outcome

然而,即使我有一个有效的结果论证,同样的错误仍然存​​在:

> best("CA", "heart failure")
Error in best("CA", "heart failure") : invalid outcome

在排序第二个参数的有效性检查时,有人能给我一个正确的方向吗?

修改:根据lukeA的评论,问题可能来自read.csv命令。我现在在上面的代码中包含了该命令。

1 个答案:

答案 0 :(得分:0)

我认为重点在于: 第二个参数“结果”被分配给csv文件内容 根据“结果&lt; - read.csv(”outcome-of-care-measures.csv“,colClasses =”character“)” 所以结果永远不应该有效:)