gpt4 book ai didi

r - 成对矩阵到结果列表

转载 作者:行者123 更新时间:2023-12-04 09:59:15 25 4
gpt4 key购买 nike

假设我们有一个矩阵 M

M       <- matrix(c(1:9),3,3)
diag(M) <- NA
M
[,1] [,2] [,3]
[1,] NA 4 7
[2,] 2 NA 8
[3,] 3 6 NA

其中每个条目描述成对交互的结果。每行互动 i带列 j被解释为“对象 i 表现优于对象 j X 倍”。示例:在两种情况下,对象 2 的性能优于对象 1。在 7 种情况下,对象 1 的性能优于对象 3。

有没有一种快速的方法可以将这个矩阵转换成一个对象,以每行完全描述两个对象之间交互的格式保存这些信息?目标是这样的:
     [,1]   [,2]   [,3] [,4]
[1,] "OBJ1" "OBJ2" "N1" "N2"
[2,] "1" "2" "4" "2"
[3,] "1" "3" "7" "3"
[4,] "2" "3" "8" "6"

其中前两列给出了比较的对象,而第 3 列和第 4 列描述了 OBJ1 的频率。跑赢 OBJ2反之亦然。第一行的解释是:对象 1 的表现优于对象 2 4 次,而对象 2 的表现优于对象 1 2 次。我一直在玩 reshape2并且到目前为止没有有用的结果进行聚合。

最佳答案

也许你可以试试下面的代码

inds <- t(combn(dim(M)[1], 2))
Mout <- `colnames<-`(
cbind(inds, M[inds], M[inds[, 2:1]]),
do.call(paste0, rev(expand.grid(1:2, c("Obj", "N"))))
)

这使
> Mout
Obj1 Obj2 N1 N2
[1,] 1 2 4 2
[2,] 1 3 7 3
[3,] 2 3 8 6

关于r - 成对矩阵到结果列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61865765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com