r语言 - 检查一个向量中的元素是否仅从另一个向量绘制



我有一个R列表,其中包含不同长度的数字向量。像这样的东西。

l = list(a = c(0, 1, 2), b = c(0, 1), c = c(0, 1, NA), d = c(0, 1, 5))

我想识别值为 01NA 的向量,因此可以转换为逻辑向量。在上面的例子中,我将识别向量bc

为此,我将尝试这样的事情。

is.logical.vector = lapply(l, FUNCTION_NAME)

但我不确定使用什么函数来代替FUNCTION_NAME(这只是一个用于说明目的的占位符)。我需要一些可以接受像allowed = c(0, 1, NA)这样的向量并确保只有allowed中的值在向量的元素中表示的东西(如列表 l 中的那些)。

你知道这样的功能是否存在吗?或者,你知道我如何在没有显式for循环的情况下构造这样的函数吗?提前谢谢你!

从它的声音来看,您正在寻找all%in%的组合:

vapply(l, function(z) all(z %in% c(0, 1, NA)), logical(1L))
#     a     b     c     d 
# FALSE  TRUE  TRUE FALSE 

或者,您可以使用lapply

lapply(l, function(z) all(z %in% c(0, 1, NA)))

仅供参考,as.logical(5)甚至as.logical(-5)也评估为TRUE,因此您的条件"因此可以转换为逻辑向量"与您实际要求的不太匹配:-)

最新更新