矩阵之间的行匹配指数

时间:2017-12-15 10:59:38

标签: r matrix

设n为正整数。我们有一个矩阵B,它有n列,其条目是1和n之间的整数。目的是将B行与排列行(n)相匹配,记住向量v中的索引。

例如,让我们考虑以下内容。如果

permutations(3)=
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2
[3,]    2    1    3
[4,]    2    3    1
[5,]    3    1    2
[6,]    3    2    1

B=
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    2    3
[3,]    3    1    2
[4,]    2    3    1
[5,]    3    1    2

然后矢量v是

1 1 5 4 5

因为B的前两行等于排列(3)的行号1,所以B的第三行是排列(3)的行号5,依此类推。

我尝试应用命令

 row.match

但后者返回错误:

Error in do.call("paste", c(x[, , drop = FALSE], sep = "\r")) : 
second argument must be a list

2 个答案:

答案 0 :(得分:4)

一种方法是使用match

match(do.call(paste, data.frame(B)), do.call(paste, data.frame(m1)))
#[1] 1 1 5 4 5

答案 1 :(得分:2)

一种可能的方法是将矩阵转换为数据框并加入它们:

A = read.table(text = "
1    2    3
1    3    2
2    1    3
2    3    1
3    1    2
3    2    1
")

B = read.table(text = "
1    2    3
1    2    3
3    1    2
2    3    1
3    1    2
")

library(dplyr)

A %>%
  mutate(row_id = row_number()) %>%
  right_join(B) %>%
  pull(row_id)

# [1] 1 1 5 4 5