将向量中的所有元素与不带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