R 返回不包含整数(0)的缺失值

R 返回不包含整数(0)的缺失值,r,R,我想确定一个向量中的哪些值存在于另一个向量中。有时,在我的应用程序中,第一个向量的值都不存在;在这种情况下,我希望是NA。发生这种情况时,我当前的方法返回整数(0): l <- 1:3 m <- 2:5 n <- 4:6 l[l %in% m] 整数(0) 讨论如何使用length捕获整数(0),但是否有一种方法可以首先避免整数(0),并且只需一步即可完成此操作?对上一个问题的回答表明可以使用任何,但我看不出在本例中该如何工作。您可以执行以下操作: l[match(l, n)

我想确定一个向量中的哪些值存在于另一个向量中。有时,在我的应用程序中,第一个向量的值都不存在;在这种情况下,我希望是NA。发生这种情况时,我当前的方法返回整数(0):

l <- 1:3
m <- 2:5
n <- 4:6
l[l %in% m]
整数(0)

讨论如何使用
length
捕获整数(0),但是否有一种方法可以首先避免整数(0),并且只需一步即可完成此操作?对上一个问题的回答表明可以使用
任何
,但我看不出在本例中该如何工作。

您可以执行以下操作:

l[match(l, n)]

[1] NA NA NA
或:


您可以使用自定义函数捕获
整数(0)

l <- 1:3
m <- 2:5
n <- 4:6

returnsafe <- function(a, b) {
    result <- a[a %in% b]
    if(is.integer(result) && length(result) == 0L) {
        return(NA)
    } else {
        return(result)
    }
}


> returnsafe(l, n)
[1] NA
l
i
any(l[match(l, n)])

[1] NA
l <- 1:3
m <- 2:5
n <- 4:6

returnsafe <- function(a, b) {
    result <- a[a %in% b]
    if(is.integer(result) && length(result) == 0L) {
        return(NA)
    } else {
        return(result)
    }
}


> returnsafe(l, n)
[1] NA