我知道有多种方法可以使用f(v, w = NULL, x = NULL, y = NULL, z = NULL)
检查多个变量是否彼此相等,但这不是我在这里问的问题。我们假设我有一个函数w
,我想知道x
,y
,z
和all(is.null(w), is.null(x), is.null(y), is.null(z))
是否都为NULL。我知道这样做的唯一方法是使用all(c(w, x, y, z), is.null)
。有没有更简单的方法?我设想像sapply(c(w, x, y, z), is.null)
这样的矢量化方法,但我想到了什么。 {{1}}只返回一个空列表。
答案 0 :(得分:6)
在创建要测试的组时使用list
而不是c
:
w <- x <- y <- z <- NULL
sapply(list(w,x,y,z), is.null)
#[1] TRUE TRUE TRUE TRUE
all(sapply(list(w,x,y,z), is.null))
#[1] TRUE
似乎有效。
至于为什么c
不起作用,请考虑:
c(NULL,NULL,1,NULL)
#[1] 1
c(NULL,NULL,NULL)
#NULL