首页 文章

去除R中矩阵中高度相同的列

提问于
浏览
1

来自(哪里

data <- matrix(rnorm(100),10,10)     
row.names(data) <- c(1:10)
colnames(data) <- letters[1:10]
corr <- cor(data, method="spearman")
corr.a <- corr[rownames(corr)=="a", ,drop=FALSE]

我创建了一个对象,该对象由矩阵“data”的成对列秩相关的相关矩阵“corr”的行“a”组成 . 我想在“corr.a”中识别所有值> 0.4,但是在这里我没有保留列名,例如:

corr.a.sig <-  corr.a[corr.a>0.4,drop=FALSE]

corr.a.sig现在是一个简单的向量,没有其他信息 . 我想要达到的目的是:

  • 在行a中标识所有值> 0.4,并创建矩阵/数据帧以保留colname信息

  • 创建一个包含值> 0.4的所有列名称的向量

  • 在初始矩阵"data"的列名中查找该向量中的名称,并从该矩阵中删除相应的列 .

换句话说,我想在计数矩阵中识别非常相似的列,并从所述矩阵中删除它们 .

谢谢 .

1 回答

  • 1

    您可以使用 drop=T (这是默认值)对1x10 corr.a 矩阵进行列索引,以获得保留名称的向量 . 然后,您可以使用该向量执行 data 列的所需删除:

    set.seed(4);
    data <- matrix(rnorm(100),10,10);
    row.names(data) <- 1:10;
    colnames(data) <- letters[1:10];
    corr <- cor(data,method='spearman');
    corr.a <- corr[rownames(corr)=='a',,drop=F];
    corr.a.sig <- corr.a[,corr.a>0.4];
    corr.a.sig;
    ##         a         f
    ## 1.0000000 0.4787879
    data[,!colnames(data)%in%names(corr.a.sig)];
    ##              b          c          d           e          g           h          i           j
    ## 1   0.56660450  1.5408150  0.1534642  1.34370863 -1.0685231  0.15867690  1.2869283 -1.27765990
    ## 2   0.01571945  0.1651690  1.0519326  0.18153538  1.0644507 -0.48566507 -0.2141497 -0.79801248
    ## 3   0.38305734  1.3076224 -0.7542112  1.29251234 -1.3127218 -0.95890607 -0.5747455  0.15908242
    ## 4  -0.04513712  1.2882569 -1.4821891 -1.68804858  2.0636947  0.18051729 -1.4707270  0.61479763
    ## 5   0.03435191  0.5928969  0.8611319 -0.82099358  0.1313830  0.72173428 -1.0327384  0.68794796
    ## 6   0.16902677 -0.2829437 -0.4045198 -0.86214614 -0.2316884 -0.36954048 -1.3065249 -0.04705101
    ## 7   1.16502684  1.2558840 -0.2274054  0.09884369 -0.3973555  0.23753831 -0.8382524  2.33032168
    ## 8  -0.04420400  0.9098392  0.9340962 -0.37565514  0.8894321 -0.66592211 -1.1306537 -0.57756599
    ## 9  -0.10036844 -0.9280281 -0.4658959  0.72390416  0.5261690 -0.79680751  0.3687482  0.96847913
    ## 10 -0.28344457  1.2401808 -0.6375435 -1.79738202 -0.1712732 -0.05169693 -0.2018030 -0.27753563
    

相关问题