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