我问这个相当简单的问题感到有些尴尬,但是我已经搜索了几个小时,无法理解。
我正在尝试为我的功能建立一个开关:
output <- "both"
if (output== "both" | "partone")
{cat("partone")}
if (output=="both" | "parttwo")
{cat("parttwo")}
这应该产生
partone
和parttwo
。而output <- "partone"
只是partone
。这怎么工作?
最佳答案
如果我们检查逻辑条件
output== "both" | "partone"
因为我们需要检查'both'或'partone',所以在字符串元素的
%in%
上使用vector
output %in% c('both', 'partone')
#[1] TRUE
现在,创建一个可重用的函数
f1 <- function(out, vec) {
if(out %in% vec) cat(setdiff(vec, 'both'), '\n')
}
output <- 'both'
f1(output, c('both', 'partone'))
#partone
f1(output, c('both', 'parttwo'))
#parttwo
output <- 'partone'
f1(output, c('both', 'partone'))
#partone
f1(output, c('both', 'parttwo'))