r - 矩阵的一行及其在R中的同一矩阵中反转
问题描述
有没有办法找到矩阵的一行是否包含在矩阵中但以相反的方式?
例如,这发生在以下矩阵中W
:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 1 1 2 2 2 3 3 3
[2,] 1 2 3 1 2 3 1 2 3
[3,] 3 3 3 2 2 2 1 1 1
在第一排和第三排之间。
我已经开发了以下代码,但它仅在矩阵中以相反的方式存在行时才有效:
WW=W[, rev(seq_len(ncol(W)))]
x=match(data.frame(t(W)), data.frame(t(WW)))
A=cbind( c(1:nrow(W)),x )
Z=t(apply(A,1,sort))
x=unique(Z[,2])
W=W[-x,]
所以,在前面的矩阵W
中,我的代码不起作用,因为NA
在代码的第二行的结果中。
我们如何解决这个问题?
解决方案
“有什么方法可以找出矩阵中的一行是否包含在矩阵中但以相反的方式?”
是的,计算行之间的距离。如果您的矩阵不是那么大,这是非常有效的:
m <- matrix(c(1, 1, 3, 1, 2, 3, 1, 3, 3, 2, 1, 2, 2, 2, 2, 2, 3, 2, 3, 1, 1, 3, 2, 1, 3, 3, 1), nrow = 3)
res <- as.matrix(dist(rbind(m,
m[, rev(seq_len(ncol(m)))])))
res <- res[nrow(m) + seq_len(nrow(m)), seq_len(nrow(m))]
rownames(res) <- seq_len(nrow(m))
which(!res, arr.ind = TRUE)
# row col
#3 3 1
#1 1 3
any(!res)
[1] TRUE
推荐阅读
- javascript - 如何将 tsx 文件转换为 React 的 js 文件
- php - How do I install php-curl in CentOS 8?
- java - Servlet [example] in web application [/SpringMvcDemo] threw load() exception java.lang.ClassNotFoundException:
- arrays - 如何将numpy数组四舍五入为1dp
- c# - 从控制器发送消息以在 asp.net core mvc 中查看的最佳方式
- mongodb - MongoDB Atlas 连接问题
- api - 雅虎财务 cookie 无效
- django - Django rest框架中的嵌套对象
- javascript - Vanilla JavaScript 无法使用 set src 添加图像(图像未加载)
- python - TypeError:字段“id”需要一个数字,但得到了