【问题标题】:R generate matrix from linear table with column and row numbersR从具有列号和行号的线性表生成矩阵
【发布时间】:2012-10-16 12:29:54
【问题描述】:

我是 R 的新手,并且与数组有斗争。我的问题很简单,但我在网络或 R 文档中找不到简单的答案。

我有一个包含列号和行号的表,我想用它来生成一个新矩阵

原表:

    V1  V2     pval
1    1    2    5.914384e-13
2    1    3    8.143390e-01
3    1    4    7.587818e-01
4    1    5    9.734698e-12
5    1    6    7.812521e-19

我想使用:

  • V1 作为新矩阵的列号;
  • V2 作为行号
  • pvals 作为值

目标矩阵:

     1         2       3       4
1    0         5e-1    8e-1    7e-1
2    5e-13     0
3    8e-1              0
4    7e-1                      0

【问题讨论】:

    标签: arrays r matrix


    【解决方案1】:
    #some data
    set.seed(42)
    df <- data.frame(V1=rep(1:6,each=3),V2=rep(1:3,6),pval=runif(18,0,1))
    df <- df[df$V1!=df$V2,]
    
    #   V1 V2        pval
    #2   1  2 0.560332746
    #3   1  3 0.904031387
    #4   2  1 0.138710168
    #6   2  3 0.946668233
    #7   3  1 0.082437558
    #8   3  2 0.514211784
    # ...
    
    #use dcast to change to wide format
    library(reshape2)
    df2 <- dcast(df,V2~V1,fill=0)
    
    #  V2         1         2          3         4         5           6
    #1  1 0.0000000 0.1387102 0.08243756 0.9057381 0.7375956 0.685169729
    #2  2 0.5603327 0.0000000 0.51421178 0.4469696 0.8110551 0.003948339
    #3  3 0.9040314 0.9466682 0.00000000 0.8360043 0.3881083 0.832916080
    
    #in case you really want a matrix object
    m <- as.matrix(df2[,-1])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多