如何在 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
我们的函数返回3和4 ,因为这些是等于值 4 的向量元素的位置。
其他资源
以下教程解释了如何在 R 中执行其他常见任务: