【发布时间】:2014-07-29 17:13:21
【问题描述】:
在以下示例中,我定义了“myFunc”,然后测试两个错误条件。如果两个错误条件都不满足,我希望执行“myFunc”。
State<-rep(c("NY","NJ"),times=5)
Test<-rep(c("LSAT", "MCAT", "GRE","TOEFL","ACT"), times=2)
Grade<-trunc(rep((seq(from=500, to=600,length.out=10))))
dat<-data.frame(Test,State,Grade)
statelist<-c("NY","NJ","CA")
testlist<-c("LSAT", "MCAT", "GRE","TOEFL","ACT","VSAT")
myFunc<-function(state,test)
{
dat<-subset(dat,subset=(State==state & Test==test))
}
ifelse(!state %in% statelist, stop("invalid state"),
ifelse(!test %in% testlist, stop("invalid test"),
ifelse(myFunc)
当我使用以下变量测试函数时:
myFunc("NY", "GRE")
我收到此错误消息:
Error: unexpected symbol in:
" ifelse(myFunc)
myFunc"
另外,当我使用无效状态“NN”进行测试时,
myFunc("NN", "GRE")
未触发“无效状态”消息,并生成与我使用有效状态时相同的错误消息。
我组织三个 ifelse 语句的方式有问题吗?我想将两个错误检查排除在函数之外,以便函数只处理子集。
【问题讨论】:
-
1-您最后的
ifelse没有任何意义。 2-在您的全局环境中没有称为“状态”或“测试”的变量。 3- 即使你最后一个ifelse是正确的,你至少缺少 2 个括号 -
查看
?stopifnot。
标签: r function if-statement