【问题标题】:Setting values in a matrix according to values in another matrix in R根据R中另一个矩阵中的值设置矩阵中的值
【发布时间】:2016-02-24 20:29:12
【问题描述】:

我有一个相关矩阵 (c.mat) 和一个 (p.mat) 中每个相关性的 p 值矩阵。

p.mat 中的每个坐标都是 c.mat 中该坐标处相关性的 p 值。

我想在 c.mat 中将 p 值低于阈值 (0.05) 的任何相关性设置为 NA。

提前感谢您的帮助。

【问题讨论】:

  • 这似乎是一个相当标准的子集问题。你知道子集在 R 中是如何工作的吗?尝试类似your_matrix[your_index] <- NA
  • 我不知道 R 中的子集化是如何工作的。我对 R 非常陌生,并且在尝试处理工作中的大型数据集时尝试自己学习。我不确定我试图做的事情的名字是什么,所以我为这个简单的问题道歉。无论如何感谢您的帮助。

标签: r matrix matrix-multiplication


【解决方案1】:

我认为which 是您正在寻找的。这假设相同的矩阵大小。

set.seed(9)
a <- matrix(rnorm(9, 10, 2), nrow=3)
b <- matrix(rnorm(9, .2, .2), nrow=3)
a[which(b<.05)] <- NA

【讨论】:

    【解决方案2】:

    正如上面提到的 coffeinjunky,这也可以通过基本的子集操作来完成:

    (@cory,我使用了你的一些代码)

    set.seed(9)
    
    c.mat <- matrix(rnorm(9, 10, 2), nrow=3)
    p.mat <- matrix(rnorm(9, .2, .2), nrow=3)
    c.mat[p.mat<0.05] <- NA
    
    # inital c.mat
              [,1]      [,2]      [,3]
    [1,] 11.775768 10.364504  8.613336
    [2,]  8.585017  9.466223 15.363980
    [3,] 13.513986 11.852843 10.445049
    
    # inital p.mat
              [,1]      [,2]        [,3]
    [1,] 0.1274126 0.2142108  0.03211007
    [2,] 0.4555141 0.1467923  0.18451039
    [3,] 0.1062206 0.5690514 -0.32354111
    
    # c.mat after threshold correction
              [,1]      [,2]     [,3]
    [1,] 11.775768 10.364504       NA
    [2,]  8.585017  9.466223 15.36398
    [3,] 13.513986 11.852843       NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多