用一些值替换矩阵的 NA
replace NA of a matrix with some values
我有这个矩阵:
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=matrix(c(24,1,3,2, 4,4,4,4, 3,2,2,5, 1,3,5,1),nrow=4,byrow=TRUE)
[,1] [,2] [,3] [,4]
[1,] 24 1 3 2
[2,] 4 4 4 4
[3,] 3 2 2 5
[4,] 1 3 5 1
和第一个矩阵 "mat" 的 NA
行索引的子集:
subset=c(1,3)
我想用具有最大值的行的值的列名替换矩阵的 NA
。
在这种情况下,第一行为“1”,第三行为“4”,我不关心第 2 行和第 4 行。
使用这个
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,]]
这应该用 mat2 中同一行中的最大值替换每个 NA 值。我没有可以调试的开放内核,所以我希望它能工作。如果您有任何问题或崩溃,请发表评论。
我有这个矩阵:
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=matrix(c(24,1,3,2, 4,4,4,4, 3,2,2,5, 1,3,5,1),nrow=4,byrow=TRUE)
[,1] [,2] [,3] [,4]
[1,] 24 1 3 2
[2,] 4 4 4 4
[3,] 3 2 2 5
[4,] 1 3 5 1
和第一个矩阵 "mat" 的 NA
行索引的子集:
subset=c(1,3)
我想用具有最大值的行的值的列名替换矩阵的 NA
。
在这种情况下,第一行为“1”,第三行为“4”,我不关心第 2 行和第 4 行。
使用这个
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,]]
这应该用 mat2 中同一行中的最大值替换每个 NA 值。我没有可以调试的开放内核,所以我希望它能工作。如果您有任何问题或崩溃,请发表评论。