假设我有两个矩阵,每个矩阵有两列和不同的行数.我想检查并查看另一个矩阵中哪一对矩阵.如果这些是一维的,我通常只是a %in% x为了得到我的结果.match似乎只对矢量有效.
> a
[,1] [,2]
[1,] 1 2
[2,] 4 9
[3,] 1 6
[4,] 7 7
> x
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
Run Code Online (Sandbox Code Playgroud)
我希望结果如此c(FALSE,TRUE,TRUE,FALSE).
前几天我花了一些时间寻找一种方法来检查行向量是否包含在R中的某些行向量中.基本上,我想概括%in%运算符以匹配元组而不是向量中的每个条目.例如,我想:
row.vec = c("A", 3)
row.vec
# [1] "A" "3"
data.set = rbind(c("A",1),c("B",3),c("C",2))
data.set
# [,1] [,2]
# [1,] "A" "1"
# [2,] "B" "3"
# [3,] "C" "2"
row.vec %tuple.in% data.set
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)
对于我的伪造运算符,%tuple.in%因为行向量c("A",3)不是data.set中的行向量.使用%in%运算符给出:
row.vec %in% data.set
# [1] TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
因为"A"和3都在data.set,这不是我想要的.
我有两个问题.首先,对此有什么好的解决方案吗?
其次,由于我找不到它们(即使它们存在),我试着编写自己的函数来完成它.它适用于行向量的输入矩阵,但我想知道是否有任何专家提出了改进:
is.tuple.in <- function(matrix1, matrix2){
# Apply rbind() so that matrix1 has columns even if it is a row vector.
matrix1 = rbind(matrix1)
if(ncol(matrix1) != …Run Code Online (Sandbox Code Playgroud)