将向量中的所有元素与不带for循环的列表中的所有元素进行比较

将向量中的所有元素与不带for循环的列表中的所有元素进行比较,r,apply,lapply,mapply,R,Apply,Lapply,Mapply,这就是我想做的 List <- list(LETTERS,LETTERS,LETTERS) Vector <- c("A","B","C","D") 使用mapply,输出如下所示。我想要的输出是这样的 [,1] [,2] [,3] [1,] TRUE TRUE TRUE [2,] TRUE TRUE TRUE [3,] TRUE TRUE TRUE [4,] TRUE TRUE TRUE 在不使用嵌套for循环的情况下,是否仍然可以执行此操作??还尝试了函数outer(),

这就是我想做的

List <- list(LETTERS,LETTERS,LETTERS)
Vector <- c("A","B","C","D")
使用mapply,输出如下所示。我想要的输出是这样的

[,1]  [,2]  [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE
[4,] TRUE TRUE TRUE

在不使用嵌套for循环的情况下,是否仍然可以执行此操作??还尝试了函数
outer()
,但不起作用

也许以下其中一项更符合您的要求:

sapply(List, function(x) Vector %in% x)
mapply(function(x, y) {x %in% y}, list(Vector), List)
vapply(List, function(x) Vector %in% x, logical(length(Vector)))
所有结果如下:

#      [,1] [,2] [,3]
# [1,] TRUE TRUE TRUE
# [2,] TRUE TRUE TRUE
# [3,] TRUE TRUE TRUE
# [4,] TRUE TRUE TRUE


我更喜欢第三个选项,因为
vapply
允许您具体说明所期望的输出形式(这里是与输入“vector”长度相同的逻辑向量)。这使得它比
sapply
更有效,后者检查值是否可以简化为数组(使用恰当命名的
simplify2array
函数)。

提供一个更有趣的示例将使其他人更容易验证:-)非常感谢!!对不起,我想不出更简单的了example@koundy,示例很好,但我会更改一些值,以确保
TRUE
FALSE
值显示在您期望的位置,而不仅仅是
TRUE
值的矩阵:-)是的,这样会更好。谢谢你的建议
#      [,1] [,2] [,3]
# [1,] TRUE TRUE TRUE
# [2,] TRUE TRUE TRUE
# [3,] TRUE TRUE TRUE
# [4,] TRUE TRUE TRUE