r - 检查向量是否包含在 R 中的矩阵中

标签 r statistics matrix

我不敢相信我花了这么长时间才弄明白,我仍然无法弄明白。

我需要保留一组向量,然后检查某个向量是否在该集合中。我尝试将列表与 %in% 结合使用,但这似乎无法正常工作。

我的下一个想法是创建一个矩阵和 rbind 向量,但现在我不知道如何检查向量是否包含在矩阵中。 %in 似乎比较集合而不是确切的行。同样似乎适用于相交。

非常感谢帮助!

最佳答案

你的意思是这样吗:

wantVec <- c(3,1,2)
myList <- list(A = c(1:3), B = c(3,1,2), C = c(2,3,1))
sapply(myList, function(x, want) isTRUE(all.equal(x, want)), wantVec)
## or, is the vector in the set?
any(sapply(myList, function(x, want) isTRUE(all.equal(x, want)), wantVec))

我们可以用矩阵做类似的事情:
myMat <- matrix(unlist(myList), ncol = 3, byrow = TRUE)
## As the vectors are now in the rows, we use apply over the rows
apply(myMat, 1, function(x, want) isTRUE(all.equal(x, want)), wantVec)
## or
any(apply(myMat, 1, function(x, want) isTRUE(all.equal(x, want)), wantVec))

或按列:
myMat2 <- matrix(unlist(myList), ncol = 3)
## As the vectors are now in the cols, we use apply over the cols
apply(myMat, 2, function(x, want) isTRUE(all.equal(x, want)), wantVec)
## or
any(apply(myMat, 2, function(x, want) isTRUE(all.equal(x, want)), wantVec))

如果你需要这样做很多,写你自己的函数
vecMatch <- function(x, want) {
    isTRUE(all.equal(x, want))
}

然后使用它,例如在列表 myList 上:
> sapply(myList, vecMatch, wantVec)
    A     B     C 
FALSE  TRUE FALSE 
> any(sapply(myList, vecMatch, wantVec))
[1] TRUE

或者甚至包装整个事情:
vecMatch <- function(x, want) {
    out <- sapply(x, function(x, want) isTRUE(all.equal(x, want)), want)
    any(out)
}

> vecMatch(myList, wantVec)
[1] TRUE
> vecMatch(myList, 5:3)
[1] FALSE

编辑: 关于为什么我使用 isTRUE() 包裹 all.equal() 调用的快速评论。这是因为当两个参数 相等时, all.equal() 不返回逻辑值 ( FALSE ):
> all.equal(1:3, c(3,2,1))
[1] "Mean relative difference: 1"
isTRUE() 在这里很有用,因为它返回 TRUE 如果它的参数是 TRUE ,而它返回 FALSE 如果它是其他任何东西。

关于r - 检查向量是否包含在 R 中的矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294130/

相关文章:

r - ggplot 中的颜色-应用于离散变量的连续值

r - 在每第 N 个单词后插入字符串

python - 更改 numpy 中矩阵的顺序

matlab - GLM特征选择方法

java - 使用递归求解 Hadamard 矩阵

java - 如何在 Java 或 AS3 中创建和旋转三维矩阵

r - 将周数转换为日期不断将周数添加到今天的日期

r - 逻辑回归双环 R

python - 如何正确使用 scipy 的 skew 和 kurtosis 函数?

r - 如何在R中总结得出一个小组的模式