我想创建一个首先检查以确保传递给该函数的参数有效的函数。我的特定函数有两个参数,我已成功检查第一个参数的有效性。但是,检查第二个参数给我带来了麻烦。
我想检查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
命令。我现在在上面的代码中包含了该命令。
答案 0 :(得分:0)
我认为重点在于: 第二个参数“结果”被分配给csv文件内容 根据“结果&lt; - read.csv(”outcome-of-care-measures.csv“,colClasses =”character“)” 所以结果永远不应该有效:)