使用apply更新Matrix

时间:2017-11-13 13:25:08

标签: r matrix apply

我有一个预定义的矩阵M = matrix(0,5,4)。我想根据条件df(矩阵行元素)和df$colA = x(矩阵列元素)将数据帧df$colB = y对象的值从零值更新为正确值。我已使用相应的唯一colA和colB值设置行名称和列名称。 ColA和ColB值是离散整数,而不是采用常规序列值。

  

M =矩阵(0,5,4)   rownames(M)= C(135,138,145,146,151)   colnames(M)= C(192204206207)

    192 204 206 207
135   0   0   0   0
138   0   0   0   0
145   0   0   0   0
146   0   0   0   0
151   0   0   0   0

df-> ColA   ColB    ColC
135 192 1
135 204 1
135 206 -1
138 192 -1
138 206 1
138 207 1
145 192 -1
145 204 -1
145 206 -1
145 207 1
146 206 1
146 207 1
151 192 -1
151 207 1
for (r in rownames(M)) {
  for (c in colnames(M)) {
    tmp = df[(df$colA == c & df$colB==r),]$colC
    if (!(length(tmp) == 0)) {
      M[(rownames(M) == r),(colnames(M) == c)]= tmp
    }
  }
}

不是使用for循环,而是想知道是否可以使用apply或outer函数实现这一点,并且使用自定义函数处理matric更新部分。请帮助如何实现这一目标。

我试图引用此链接,但没有运气。

1 个答案:

答案 0 :(得分:-1)

要修改矩阵,您可以使用apply()功能。代码将是:

apply(M,1,function(x) <your_function>) # If you want to run for each row
apply(M,2,function(x) <your function>) # If you want to run for each column

如果您编写所需功能或简短示例,我们将为您提供更好的帮助。