如何用另一个矩阵的匹配元素替换矩阵的元素

时间:2015-05-27 02:41:19

标签: r matrix

我需要编写一个函数,通过维度相似的另一个矩阵的相应元素在矩阵中推算NA。 我认为将矩阵视为向量并重构它们可能更简单,但代码无论如何都不起作用。我尝试了以下方法:

impute <-function(x,y){
    x<-as.vector(x)
    y<-as.vector(y)
    for (i in 1:length(x)){
        if (isTRUE(is.na(x[i])))
        x[i]<-y[i]
    }
}

我尝试运行两个小矩阵的函数以跟踪插补,结果矩阵为NULL

> M<-impute(A,B)
> M
NULL

这只是避免处理两个矩阵中的几个指数的替代方法。欢迎使用高效的代码。

2 个答案:

答案 0 :(得分:1)

它们的尺寸完全相同吗?

mat <- matrix(1:100, 10, 10)
mat[sample(1:100, 20)] <- NA
mat2 <- matrix(1:100, 10, 10)
inds <- is.na(mat)
mat[inds] <- mat2[inds]

答案 1 :(得分:0)

你为此而嘲笑吗?

mm1[is.na(mm1)] <- mm2[is.na(mm1)]