Як зловити ціле число (0) в r (з прикладами)


Іноді, коли ви використовуєте функцію which() у R, ви можете отримати ціле число (0) , яке вказує, що жоден з елементів у векторі не має значення TRUE.

Наприклад, припустімо, що ми використовуємо такий код, щоб перевірити, які елементи вектора дорівнюють значенню 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)

Оскільки жоден з елементів у векторі не дорівнює 10, результатом є ціле число довжини 0, записане як integer(0) у R.

Важливо зазначити, що ціле число (0) не є помилкою, але іноді ви можете просто захотіти знати, коли це станеться.

У наступних прикладах показано, як захопити ціле число (0) у R.

Приклад 1. Зловіть ціле число (0) у R за допомогою функції identical().

Найпростіший спосіб зловити ціле число (0) у R — це використати функцію identical() ось так:

 #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

Оскільки наш результат дорівнює integer(0) , R повертає TRUE .

Це дає нам знати, що результатом функції which() є ціле число довжини 0.

Приклад 2: Перехоплення цілого числа (0) у R за допомогою функції if else

Інший спосіб перехопити ціле число (0) — це визначити функцію if else, яка повертає щось конкретне, якщо зустрічається ціле число (0) .

Наприклад, ми могли б визначити таку функцію, яка повертає фразу «Це ціле число (0)», якщо з’являється ціле число (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)
  }

}

Потім ми можемо використовувати цю функцію:

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

Оскільки x справді є цілим числом (0) , наша функція повертає вказане нами речення.

І якщо x не є цілим числом (0) , наша функція просто поверне результат функції 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

Наша функція повертає 3 і 4 , оскільки це позиції елементів вектора, які дорівнюють значенню 4.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в R:

Як написати вашу першу функцію tryCatch() у R
Як створити вкладений цикл For у R
Як повернути значення функції в R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *