R 用一些值替换矩阵的NA

R 用一些值替换矩阵的NA,r,matrix,max,fill,R,Matrix,Max,Fill,我有一个矩阵: mat=matrix(c(1,1,1,2,2,2,3,4,NA, 4,4,4,4,4,3,5,6,4, 3,3,5,5,6,8,0,9,NA, 1,1,1,1,1,4,5,6,1),nrow=4,byrow=TRUE) print(mat) # [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]

我有一个矩阵:

mat=matrix(c(1,1,1,2,2,2,3,4,NA,
                 4,4,4,4,4,3,5,6,4,
                 3,3,5,5,6,8,0,9,NA,
                 1,1,1,1,1,4,5,6,1),nrow=4,byrow=TRUE)
    print(mat)

        #      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
        # [1,]    1    1    1    2    2    2    3    4   NA
        # [2,]    4    4    4    4    4    3    5    6    4
        # [3,]    3    3    5    5    6    8    0    9   NA
        # [4,]    1    1    1    1    1    4    5    6    1
我应该用其他值替换NA值,方法如下:
我有另一个矩阵:

mat2=矩阵(c(24,1,3,2,4,4,4,4,4,3,2,5,1,3,5,1),nrow=4,byrow=TRUE)

以及具有第一个矩阵“mat”的
NA
行索引的子集:

我想用最大值行的值的colname替换矩阵的
NA

在本例中,第一行为“1”,第三行为“4”,我不关心第2行和第4行。

使用此选项

mat[subset,9] <- apply(mat2[subset,],1,which.max)

mat[subset,9]
mat[which(is.na(mat))]参见
?max.col
,例如--
max.col(mat2[subset,9],“first”)
您的
mat
是一个字符矩阵。使用不带NA值引号的
NA
subset=c(1,3)
mat[subset,9] <- apply(mat2[subset,],1,which.max)
mat[which(is.na(mat))] <- apply(mat2,1,max)[which(is.na(mat), arr.ind = T)[1,]]