我问这个相当简单的问题感到有些尴尬,但是我已经搜索了几个小时,无法理解。

我正在尝试为我的功能建立一个开关:

output <- "both"

if (output== "both" | "partone")
{cat("partone")}

if (output=="both" | "parttwo")
{cat("parttwo")}

这应该产生partoneparttwo。而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'))

08-24 15:31