Как поймать целое число (0) в R (с примерами)


Иногда, когда вы используете функцию which() в R, в результате вы можете получить целое число (0) , что указывает на то, что ни один из элементов вектора не оценивается как ИСТИНА.

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.