Я хочу заменить диагональные элементы матрицы в середине процесса трубопровода, но не могу придумать, как это сделать. Я знаю, что могу заменить диагональные элементы с помощью функции diag(), но я просто не знаю, как использовать функцию diag() внутри процесса конвейера. Ниже приведены образцы данных, и я хочу, чтобы следующие шаги были объединены в процесс трубопровода. Заранее спасибо.

aa <- matrix(1:25, nrow =5) 
diag(aa) <- NA
4
MaMu 11 Ноя 2020 в 15:47

2 ответа

Лучший ответ

Мы могли бы использовать replace с логическим условием

library(dplyr)
aa %>% 
     replace(., col(.) == row(.), NA)

-вывод

#      [,1] [,2] [,3] [,4] [,5]
#[1,]   NA    6   11   16   21
#[2,]    2   NA   12   17   22
#[3,]    3    8   NA   18   23
#[4,]    4    9   14   NA   24
#[5,]    5   10   15   20   NA
2
akrun 11 Ноя 2020 в 21:22

Один из вариантов может быть:

aa %>%
 `diag<-`(., NA)

     [,1] [,2] [,3] [,4] [,5]
[1,]   NA    6   11   16   21
[2,]    2   NA   12   17   22
[3,]    3    8   NA   18   23
[4,]    4    9   14   NA   24
[5,]    5   10   15   20   NA
3
tmfmnk 11 Ноя 2020 в 12:54