Как поймать целое число (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, записанное как целое число (0) в R.

Важно отметить, что целое число (0) не является ошибкой, но иногда вам может быть просто интересно узнать, когда это произойдет.

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

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

Самый простой способ поймать целое число (0) в R — использовать функциюидентичного() следующим образом:

 #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

Поскольку наш результат равен целому числу (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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *