设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
答案 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