짧은 것은 벡터화되어 다음과 같이 벡터를 리턴 할 수 있음을 의미합니다.
((-2:2) >= 0) & ((-2:2) <= 0)
# [1] FALSE FALSE TRUE FALSE FALSE
긴 형식은 왼쪽에서 오른쪽으로 평가하여 각 벡터의 첫 번째 요소 만 검사하므로 위의 내용은
((-2:2) >= 0) && ((-2:2) <= 0)
# [1] FALSE
도움말 페이지에서 알 수 있듯이 더 긴 형식은 "제어 흐름 프로그래밍에 적합하며 일반적으로 if 절에서 선호됩니다."
따라서 벡터가 길이가 1 인 것이 확실한 경우에만 긴 형식을 사용하려고합니다.
당신이해야 절대적으로 그들이 그 수익 만 길이가 1 인 부울 함수입니다 어디에 벡터는 이러한 경우에서와 같이 유일한 길이 1, 수있는 특정. 벡터 길이가 1보다 큰 경우 짧은 형식을 사용하려고합니다. 당신이 절대적으로 확실하지 않은 경우 그래서, 당신이 중 하나를 먼저 확인해야한다, 또는 사용 후 짧은 형식을 사용 all
하고 any
같은 제어 흐름 문에서 사용하기위한 길이 하나에 감소 if
.
함수 all
와 any
벡터화는 종종 벡터화 된 비교 결과에 사용되어 비교의 전부 또는 일부가 각각 참인지 확인합니다. 이러한 함수의 결과는 길이 1이어야하므로 if 절에 사용하기에 적합하지만 벡터화 된 비교의 결과는 그렇지 않습니다. (그러나 이러한 결과는에서 사용하기에 적합합니다 ifelse
.
마지막 차이점은 다음 &&
과 같습니다. 그리고 ||
필요한만큼의 용어 만 평가합니다 (단락이 의미하는 것 같습니다). 예를 들어, 다음은 정의되지 않은 값을 사용한 비교입니다 a
. 이 단락은,하지 않은 것처럼 &
및 |
하지 않습니다, 그것은 오류를 줄 것이다.
a
# Error: object 'a' not found
TRUE || a
# [1] TRUE
FALSE && a
# [1] FALSE
TRUE | a
# Error: object 'a' not found
FALSE & a
# Error: object 'a' not found
마지막으로 "and and andand "라는 제목 의 R Inferno 섹션 8.2.17을 참조하십시오 .