Come catturare un numero intero (0) in r (con esempi)


A volte, quando usi la funzione which() in R, potresti ritrovarti con un integer(0) , che indica che nessuno degli elementi in un vettore valuta TRUE.

Ad esempio, supponiamo di utilizzare il seguente codice per verificare quali elementi di un vettore sono uguali al valore 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)

Poiché nessuno degli elementi del vettore è uguale a 10, il risultato è un numero intero di lunghezza 0, scritto come intero(0) in R.

È importante notare che un numero intero (0) non è un errore, ma a volte potresti semplicemente voler sapere quando si verifica.

Gli esempi seguenti mostrano come acquisire un numero intero (0) in R.

Esempio 1: catturare un numero intero (0) in R utilizzando la funzione identico()

Il modo più semplice per catturare un numero intero (0) in R è utilizzare la funzione identico() in questo modo:

 #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

Poiché il nostro risultato è uguale a integer(0) , R restituisce TRUE .

Questo ci fa sapere che il risultato della funzione which() è un numero intero di lunghezza 0.

Esempio 2: acquisizione di un numero intero (0) in R utilizzando la funzione if else

Un altro modo per catturare un numero intero (0) è definire una funzione if else che restituisca qualcosa di specifico se si verifica un numero intero (0) .

Ad esempio, potremmo definire la seguente funzione per restituire la frase “È un numero intero (0)” se appare un numero intero (0) :

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

  else {
    return (data)
  }

}

Possiamo quindi utilizzare questa funzione:

 #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)"

Poiché x è effettivamente un intero(0) , la nostra funzione restituisce la frase che abbiamo specificato.

E se x non è un intero(0) , la nostra funzione restituirà semplicemente il risultato della funzione 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

La nostra funzione restituisce 3 e 4 perché queste sono le posizioni degli elementi del vettore uguali al valore 4.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

Come scrivere la tua prima funzione tryCatch() in R
Come creare un ciclo For nidificato in R
Come restituire il valore di una funzione in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *