2017-12-01 9 views
0

이 포함되어있는 경우 mat이라는 변수 하나가 NULL으로 시작됩니다. 특정 조건에서만 매트를 채울 반복적 인 프로세스가 있습니다. 이 과정을 거친 후 mat에 특정 행 이상이 있는지 확인합니다. 그렇지 않은 경우 다른 작업을 수행합니다.R : 문에 OR 조건으로 연결 한 조건 중 하나 인

이 조건을 작성하는 가장 좋은 방법은 이상적으로 is.null(mat) | nrow(mat) < n과 같습니다. is.null(mat)TRUE이고 OR로 연결되어있는 경우 문 전체는 TRUE이어야하지만 nrow(mat) < n은 오류를 발생시킵니다.

두 가지 조건으로 다시 작성하고 두 코드로 # do something 코드를 복사하여 해결할 수 있지만이를 수행하는 더 깨끗한 방법이 있습니까?

mat = NULL 

for(i in 1:10){ 
    if(runif(1) > 0.8){ 
    mat = rbind(mat, c(1,2,3)) 
    } 
} 

if(is.null(mat)){ 
    # do something... 
} else if(nrow(mat) < 3){ 
    # do something... 
} 

답변

3

당신은 ||입니다 |의 단락 버전을 사용할 수 있습니다. 도움말에서

is.null(mat) || nrow(mat) < n 

:

& 및 & & 논리적 표시와와 | 및 || 논리 OR을 나타냅니다. 더 짧은 형식은 산술 연산자와 거의 같은 방법으로 요소 단위 비교를 수행합니다. 긴 양식은 각 벡터의 첫 번째 요소 만 왼쪽에서 오른쪽으로 평가합니다. 평가는 결과가 결정될 때까지 진행됩니다. 긴 양식은 프로그래밍 제어 흐름에 적합하며 일반적으로 if 절에서 선호됩니다.