반응형
정수 (0)를 잡는 방법?
integer(0)
예 를 들어을 생성하는 명령문이 가정 해 봅시다.
a <- which(1:3 == 5)
보낸 잡는 가장 안전한 방법은 무엇입니까?
길이가 0 벡터 (정수 1)를 인쇄하는 방법을 a
길이가 0인지 테스트 할 수 있습니다 .
R> length(a)
[1] 0
당신이 식별 그것은하기 위해 사용하는 전략을 재고 가치가있을 수도 있는 당신이 원하는 요소를하지만, 더 구체적인 정보없이 대안 전략을 제시 하기는 어렵다 .
길이가 0 인 정수 라면 다음과 같은 것을 원합니다.
is.integer0 <- function(x)
{
is.integer(x) && length(x) == 0L
}
그것을 확인하십시오 :
is.integer0(integer(0)) #TRUE
is.integer0(0L) #FALSE
is.integer0(numeric(0)) #FALSE
assertive
이를 위해 사용할 수도 있습니다 .
library(assertive)
x <- integer(0)
assert_is_integer(x)
assert_is_empty(x)
x <- 0L
assert_is_integer(x)
assert_is_empty(x)
## Error: is_empty : x has length 1, not 0.
x <- numeric(0)
assert_is_integer(x)
assert_is_empty(x)
## Error: is_integer : x is not of class 'integer'; it has class 'numeric'.
아마 오프 주제,하지만, R 은이 좋은,하지만, R 은이 좋은, 벡터를 적합하고 빈 인식 기능을 적절하고- any
와 all
:
if(any(x=='dolphin')) stop("Told you, no mammals!")
if ( length(a <- which(1:3 == 5) ) ) print(a) else print("nothing returned for 'a'")
#[1] "nothing returned for 'a'"
두 번째 생각에 나는 length(.)
다음보다 더 아름답다고 생각합니다 .
if ( any(a <- which(1:3 == 5) ) ) print(a) else print("nothing returned for 'a'")
if ( any(a <- 1:3 == 5 ) ) print(a) else print("nothing returned for 'a'")
Andrie의 답변에서 영감을 얻은 경우 identical
해당 클래스의 빈 세트라는 사실을 사용하여 속성을 사용 하거나 피할 수있는 클래스의 요소와 결합합니다.
attr(a,"foo")<-"bar"
> identical(1L,c(a,1L))
[1] TRUE
또는 더 일반적으로 :
is.empty <- function(x, mode=NULL){
if (is.null(mode)) mode <- class(x)
identical(vector(mode,1),c(x,vector(class(x),1)))
}
b <- numeric(0)
> is.empty(a)
[1] TRUE
> is.empty(a,"numeric")
[1] FALSE
> is.empty(b)
[1] TRUE
> is.empty(b,"integer")
[1] FALSE
참고 URL : https://stackoverflow.com/questions/6451152/how-to-catch-integer0
반응형
'IT' 카테고리의 다른 글
Google Espresso 또는 Robotium (0) | 2020.07.24 |
---|---|
Rust 프로그램이화물에서 메타 데이터에 어떻게 접근 할 수 있습니까? (0) | 2020.07.24 |
유효한 XML 파일에 XML 선언이 필요 받습니까? (0) | 2020.07.24 |
C #에서 이벤트를 명시 적으로 제거해야합니까? (0) | 2020.07.24 |
git reset --soft의 실제 사용? (0) | 2020.07.24 |