【问题标题】:如何找到具有特定索引的矩阵列的最小值/最大值?
【发布时间】:2022-01-23 12:58:00
【问题描述】:

我阅读paper 并尝试实现算法2:

其中 ave(x,y)=2xy/(x+y)。

我找到了D1D2

> dput(D1)
structure(c(0, 0, 0.316227766016838, 0.316227766016838, 0.316227766016838, 
0, 0, 0.316227766016838, 0.316227766016838, 0.316227766016838, 
0.316227766016838, 0.316227766016838, 0, 0.316227766016838, 0.447213595499958, 
0.316227766016838, 0.316227766016838, 0.316227766016838, 0, 0.316227766016838, 
0.316227766016838, 0.316227766016838, 0.447213595499958, 0.316227766016838, 
0), .Dim = c(5L, 5L), .Dimnames = list(c("1", "4", "5", "7", 
"9"), c("1", "4", "5", "7", "9")))
> dput(D2)
structure(c(0, 0.447213595499958, 0.316227766016838, 0, 0.447213595499958, 
0.447213595499958, 0, 0.316227766016838, 0.447213595499958, 0, 
0.316227766016838, 0.316227766016838, 0, 0.316227766016838, 0.316227766016838, 
0, 0.447213595499958, 0.316227766016838, 0, 0.447213595499958, 
0.447213595499958, 0, 0.316227766016838, 0.447213595499958, 0
), .Dim = c(5L, 5L), .Dimnames = list(c("1", "5", "7", "8", "10"
), c("1", "5", "7", "8", "10")))

然后我定义了 i、j 和 r 索引:

> dput(i)
c("4", "9")
> dput(j)
c("8", "10")
> dput(r)
c("1", "5", "7")

最后

k = length(I)
D = matrix(0, k, k)
x = min(    D1[i, r] + D2[j, r])
y = max(abs(D1[i, r] - D2[j, r]))
D = 2*x*y/(x+y)

执行的答案是对称的 2x2 矩阵,但我有

> D
[1] 0

另外,我尝试过使用apply 函数:

x = apply(     D1+D2,   1, function(x) min(x)) 
y = apply(abs( D1-D2 ), 1, function(x) max(x))
D = 2*x*y/(x+y)

答案是向量:

> D
1 4 5 7 9 
0 0 0 0 0 

问题。如何找到具有指定索引的列的 min()、max()?

【问题讨论】:

    标签: r matrix apply


    【解决方案1】:

    试试下面的for 循环

    D <- `dimnames<-`(matrix(NA, length(i),length(j)),list(i,j))
    for (ki in i) {
      for (kj in j) {
        x <- min(D1[ki,r] + D2[kj,r])
        y <- max(abs(D1[ki,r] - D2[kj,r]))
        D[ki,kj] <- 2*x*y/(x+y)
      }
    }
    

    你会得到

    > D
              8        10
    4 0.0000000 0.3704839
    9 0.3162278 0.4472136
    

    【讨论】:

    • 你的代码很有趣。我希望找到一个对称矩阵。
    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2020-10-11
    • 2014-05-22
    • 2013-03-04
    • 2013-11-20
    相关资源
    最近更新 更多