【问题标题】:Replace part of a matrix by values of another matrix for specific coordinates用特定坐标的另一个矩阵的值替换矩阵的一部分
【发布时间】:2014-02-28 13:42:18
【问题描述】:

我有一个矩阵Ai,j,z 值(1:72,1:205,z)。我想用数据框Bz 值替换矩阵Az 值,并将其他非NA 值设置为0。

矩阵A:

     1   2   3   4   5   6   7 ... 205
1  999 999   0   0   0   0 1.7       0
2  999   0 0.3 1.2 4.3 2.1   0     3.8
...
72 999 999 999 999 999   0   0     2.5

数据框B:

 i   j  z
 6   1  1
 3   2  1

我想要什么:

     1   2   3   4   5   6   7 ... 205
1  999 999   0   0   0   1   0       0
2  999   0   1   0   0   0   0       0 
...
72 999 999 999 999 999   0   0       0

我知道如何用 A[A== 0]<-B 之类的另一个数字替换特定数字,但我的第二个数据集是一个 3 列数据框,其中只有一些点的 ij 值。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • B 的第一行真的是c(1, 6, 1),而不是c(6, 1, 1)(你的结果矩阵似乎暗示了这一点)

标签: r matrix replace dataframe


【解决方案1】:
A[as.matrix(B[1:2])] <- B[[3]]

您可以使用B 的前两列作为A 的数字索引。

【讨论】:

  • 您好,感谢您抽出宝贵时间回答。我试过你的代码,但它没有用 A 矩阵中的 B 项替换 A 项,它创建了一个与 z 列对应的数字向量......也许我不明白你告诉我做什么?
  • 非常感谢,事实上我的问题更加困难,因为我必须在 3D 数组中替换,但我为我的数组的每个切片复制的矩阵做了它,并且它有效!所以 A 是一个数组,B 是一个矩阵,但现在可以了。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 2014-12-17
  • 2016-09-10
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多