2016-07-19 2 views
-2

У меня есть эта матрица:заменить 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 

я должен заменить НС значения с другими значениями, таким образом:
У меня есть другая матрица:

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 

и подмножество с индексом строк с NA первой матрицы «мата»:

subset=c(1,3) 

Я хочу replcace в NA матрицы с COLNAMES от стоимости строки с максимальным значением.

в этом случае у меня будет «1» для первой строки и «4» для третьего, я не заботиться о строке 2 и 4.

+0

См. '? Max.col', например. [здесь] (http://stackoverflow.com/questions/8220343/is-there-something-like-a-pmax-index) - 'max.col (mat2 [subset,]," first ")' –

+0

Ваш 'mat' - матрица символов. Используйте «NA» без кавычек для значений NA. – Roland

ответ

0
mat[which(is.na(mat))] <- apply(mat2,1,max)[which(is.na(mat), arr.ind = T)[1,]] 

Это должно заменить каждое значение NA максимальным значением из той же строки в mat2. У меня нет открытого ядра для отладки, поэтому я надеюсь, что это сработает. Если у вас есть какие-либо вопросы или вы можете просто прокомментировать.

Смежные вопросы