【问题标题】:Populate elements of a matrix using values from a column使用列中的值填充矩阵的元素
【发布时间】:2018-02-25 00:45:14
【问题描述】:

我正在尝试使用特定列(从属)中的值填充矩阵。在下面的示例中,第 1 行中的 Dependent 值为 3,这将指示第 3 列中的 1。第 4 行的 Dependent 值为 2,因此在第 2 列中放置了 1。我曾考虑使用 for 循环,但如果有更优雅的解决问题的方法感兴趣。

Project Dependent   1   2   3   4
1         3                 1   
2                   
3                   
4         2             1
5         4                     1

提前致谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    对于

    Project <- 1:5
    Dependent <- c(3, 0, 0, 2, 4)
    df <- data.frame(Project, Dependent)
    

    创建一个矩阵

    m = matrix(nrow = max(df$Project), ncol = max(df$Dependent))
    

    并使用由行向量和列向量组成的 2 列矩阵作为索引来填充它

    m[as.matrix(df)] = 1
    

    【讨论】:

      【解决方案2】:

      这就是你所描述的。希望对你有帮助

      Project<-1:5
      Dependent<-c(3,0,0,2,4)
      df<-data.frame(Project,Dependent)
      df
      Project Dependent
      1       1         3
      2       2         0
      3       3         0
      4       4         2
      5       5         4
      
      s<-matrix(NA, nrow = nrow(df), ncol = nrow(df))
      for(i in 1:length(df$Dependent)) {
        if (i > 0 ) s[i,df$Dependent[i]]<-1 else NULL
      }
      s
        [,1] [,2] [,3] [,4] [,5]
        [1,]   NA   NA    1   NA   NA
        [2,]   NA   NA   NA   NA   NA
        [3,]   NA   NA   NA   NA   NA
        [4,]   NA    1   NA   NA   NA
        [5,]   NA   NA   NA    1   NA
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-22
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        相关资源
        最近更新 更多