Como capturar um número inteiro (0) em r (com exemplos)


Às vezes, quando você usa a função which() em R, você pode acabar com um inteiro(0) , que indica que nenhum dos elementos em um vetor é avaliado como TRUE.

Por exemplo, suponha que usemos o seguinte código para verificar quais elementos de um vetor são iguais ao valor 10:

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 10
x <- which(data == 10 )

#view results
x

integer(0)

Como nenhum dos elementos do vetor é igual a 10, o resultado é um número inteiro de comprimento 0, escrito como inteiro(0) em R.

É importante observar que um número inteiro (0) não é um erro, mas às vezes você pode querer apenas saber quando isso acontece.

Os exemplos a seguir mostram como capturar um número inteiro (0) em R.

Exemplo 1: Capture um número inteiro (0) em R usando a função idêntica()

A maneira mais fácil de capturar um número inteiro (0) em R é usar a função idêntica() como esta:

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 10
x <- which(data == 10 )

#test if x is identical to integer(0)
identical(x, integer(0))

[1] TRUE

Como nosso resultado é igual a inteiro(0) , R retorna TRUE .

Isso nos permite saber que o resultado da função which() é um número inteiro de comprimento 0.

Exemplo 2: Capturando um número inteiro (0) em R usando a função if else

Outra maneira de capturar um número inteiro (0) é definir uma função if else que retorne algo específico se ocorrer um número inteiro (0) .

Por exemplo, poderíamos definir a seguinte função para retornar a frase “É um número inteiro (0)” se um número inteiro (0) aparecer:

 #define function to catch integer(0)
integer0_test <- function (data) {
 
  if (identical(data, integer(0))) {
    return (' It is an integer(0) ')
  }

  else {
    return (data)
  }

}

Podemos então usar esta função:

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 10
x <- which(data == 10 )

#use function to test if x is integer(0)
integer0_test(x)

[1] "It is an integer(0)"

Como x é de fato um inteiro(0) , nossa função retorna a frase que especificamos.

E se x não for um inteiro(0) , nossa função simplesmente retornará o resultado da função which():

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 4
x <- which(data == 4 )

#use function to test if x is integer(0)
integer0_test(x)

[1] 3 4

Nossa função retorna 3 e 4 porque essas são as posições dos elementos do vetor iguais ao valor 4.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como escrever sua primeira função tryCatch() em R
Como criar um loop For aninhado em R
Como retornar o valor de uma função em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *