如何在 r 中捕获整数 (0)(附示例)


有时,当您在 R 中使用which()函数时,您可能会得到一个整数(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 的整数,在 R 中写为integer(0)。

请务必注意,整数 (0)不是错误,但有时您可能只想知道错误何时发生。

以下示例显示如何在 R 中捕获整数 (0)。

示例 1:使用 equal() 函数在 R 中捕获整数 (0)

在 R 中捕获整数 (0) 的最简单方法是使用equal()函数,如下所示:

 #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:使用 if else 函数在 R 中捕获整数 (0)

捕获整数 (0)的另一种方法是定义一个 if else 函数,该函数在出现整数 (0)时返回特定内容。

例如,我们可以定义以下函数,如果出现整数 (0),则返回短语“It’s an integer (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

我们的函数返回34 ,因为这些是等于值 4 的向量元素的位置。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在 R 中编写第一个 tryCatch() 函数
如何在 R 中创建嵌套 For 循环
如何返回R中函数的值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注