У меня есть список матриц почти одинакового размера. Мне нужно, чтобы верхний треугольник каждой матрицы был равен 0. Я могу сделать верхний треугольник отдельной матрицы равным 0, используя:
matrix[upper.tri(matrix)] <- 0
Когда я пытаюсь применить это к списку матриц с помощью lapply, он заменяет весь список матриц на 0. Например:
list.matrix <- lapply(list.matrix, function (x) x[upper.tri(x)] <- 0)
$`matrix1`
[1] 0
$`matrix2`
[1] 0
...
Может ли кто-нибудь предоставить информацию о том, почему это может происходить?





Это было решено путем включения функции в lapply в качестве новой функции:
f <- function(x) {
x[upper.tri(x)] <- 0
x
}
как предлагается здесь: lapply, чтобы преобразовать указанные элементы матрицы в списке в NA.
Мы можем использовать replace
f <- function(x) replace(x, upper.tri(x), 0)
f(m1)
m1 <- matrix(1:9, 3, 3)
function (x) { x[upper.tri(x)] <- 0; return(x) }cran.r-project.org/doc/manuals/R-lang.html#Argument-evaluati в