【问题标题】:find median excluding diagonal in R在R中找到不包括对角线的中位数
【发布时间】:2013-06-03 14:42:56
【问题描述】:

我在使用 R 编程时遇到问题。从矩阵中,我怎样才能找到排除对角线的每一行的中位数?

例如:矩阵 4x4

0 1 2 3 

1 0 1 2

2 1 0 1

3 2 1 0

我想找出每行不包括对角线的中位数(在这个例子中,diag=0)

我试过了:

diag(A) <- NA
mean(A, na.rm = TRUE) # doesn't work

apply(A, 1, median) # it works but the calculation including the diagonal. 

【问题讨论】:

    标签: r median diagonal


    【解决方案1】:

    试试这个:

    A <- matrix(c(0,1,2,3,1,0,1,2,2,1,0,1,3,2,1,0),nrow=4)
    sapply(1:4, function(x) median(A[x,-x]))
    
    [1] 2 1 1 2
    

    【讨论】:

      【解决方案2】:

      我不确定你为什么使用mean();你为什么不试试median()?这里是:

      A <- read.table(text="0 1 2 3 
      1 0 1 2
      2 1 0 1
      3 2 1 0", header=F)
      A <- as.matrix(A)
      diag(A) <- NA
      
      A
           V1 V2 V3 V4
      [1,] NA  1  2  3
      [2,]  1 NA  1  2
      [3,]  2  1 NA  1
      [4,]  3  2  1 NA
      
      myFun <- function(x){ median(x, na.rm=T)}
      apply(A, 1, FUN=myFun)
      [1] 2 1 1 2
      

      【讨论】:

        猜你喜欢
        • 2018-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        相关资源
        最近更新 更多