【问题标题】:Replace Values of a Large Matrix in R替换 R 中大矩阵的值
【发布时间】:2021-02-19 01:55:24
【问题描述】:

我有一个大矩阵 (50 X 10,000),其中包含表示向量值索引的整数。我想用索引的实际向量值替换表示矩阵中向量值索引的整数。

这里是值的向量dat.full$year.total

 [19] 13.51 20.56 20.03 18.33 24.30 19.65 13.99 18.84 18.61 18.70 18.39 13.80 25.89 13.08 17.19 17.90 19.44 20.51
 [37] 21.22 15.98 14.23 11.85 16.08 14.02 16.44 20.25 15.58 29.09 11.11 20.29 23.99 26.23 15.75 18.65 22.65 18.64
 [55] 22.70 17.11 21.22 14.16 27.41 17.15 16.01 10.91 15.25 18.45 27.43 19.28 18.85 15.30 22.39 12.77 16.95 11.47
 [73] 19.47 11.13 24.89 16.19 27.52 16.65 18.69 18.43 20.21 15.11 18.24 14.66 13.49 23.82 24.20 13.45 16.91 21.54
 [91] 24.51 18.54 17.44 21.35 25.82 16.95 20.62 21.70 21.17 17.38 21.87 16.79 29.93 21.38 28.49 22.29 25.88 15.96
[109] 18.28 13.88 22.02 27.17 17.52 19.31 17.13 17.02 22.19 20.32 22.29 15.65 34.15 23.57 27.39 17.25 21.89 19.01
[127] 15.89

索引为 1 到 127。我尝试使用 replace() 之类的 mat<-matrix(replace(mat, row(dat.full), dat.full$year.total)) 但这仅给出 1 列矩阵。如何实现所需的替换?

谢谢!

【问题讨论】:

    标签: r matrix vector replace


    【解决方案1】:

    假设您的矩阵和向量如下所示:

    mat <- matrix(9:1, ncol = 3)
    vec <- as.numeric(mat * 20)/100
    
    mat
    #>      [,1] [,2] [,3]
    #> [1,]    9    6    3
    #> [2,]    8    5    2
    #> [3,]    7    4    1
    
    vec
    #> [1] 1.8 1.6 1.4 1.2 1.0 0.8 0.6 0.4 0.2
    

    那么你只需这样做:

    mat[] <- vec[mat]
    

    所以现在mat 看起来像这样,每个元素都替换为vec 中的相应条目

    mat
    #>      [,1] [,2] [,3]
    #> [1,]  0.2  0.8  1.4
    #> [2,]  0.4  1.0  1.6
    #> [3,]  0.6  1.2  1.8
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 2013-10-27
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多