2017-11-11 2 views
2

오히려 간단한 질문을하기 위해 조금 당혹 스럽지만 지금은 두 시간을 찾고 있습니다. OR 교환 원을 기능 스위치로 사용

나는 나의 기능을위한 스위치를 구축하기 위해 노력하고있어 :

output <- "both" 

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

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

partoneparttwo을 생산한다. 반면에 output <- "partone"은 단지 partone입니다.

어떻게이 기능을 사용할 수 있습니까?

+0

'=='하나의 요소와 함께 작동 재사용하는 기능을 만들 수 있습니다. '% in % '또는'grepl', 즉 if (any (출력 % in % c ('both', 'partone')))' – akrun

답변

2

우리가 출력 논리적 조건을

output== "both" | "partone" 

오류를 체크하면 == "모두"| "partone"작업은, 숫자의 논리 또는 복합 유형

우리는 하나 '모두'또는 'partone', 문자열 요소의 vector%in%를 사용 확인하기 위해 필요로하는

에 대한 가능

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')) 
2

이 구문이 올바르지 않습니다 :

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

당신은 다음과 같이 쓸 수 있습니다 :

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

또는 다음과 같이이 같은

if (output %in% c("both", "partone")) 
{cat("partone")} 
2

사용 무언가를.

if (output %in% c("both","partone")) 

{cat("partone")} 

if (output %in% c("both","parttwo")) 

{cat("parttwo")} 

원하는 출력이 생성됩니다.