Как заполнить матрицу нулем (0)
Мне нужно заполнить расстояния матрицы 0. Как я могу это сделать?
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
2 ответов
я просто поставлю его здесь, так как есть куча хороших ответов в комментариях
вы можете создать совершенно новую матрицу, используя размеры вашей старой матрицы
matrix(0L, nrow = dim(distances)[1], ncol = dim(distances)[2]) # @nrussell
или, аналогично, сохранить несколько нажатий клавиш (потому что matrix
является частным случаем двумерного array
)
array(0L, dim(distances)) # @alexis_laz
или вы можете сохранить структуру вашей старой матрицы, используя []
и заполните его нулями
distances[] <- 0L # @Richard
или вы могли бы просто умножить все значения на ноль
distances*0L # @akrun
или более общее решение, которое будет принимать в count NA
случаях (потому что любое число в нулевой степени всегда равно 1)
distances^0L - 1L # @docendodiscimus
или некоторые из моих вещей: Вы можете преобразовать свою матрицу в логическую матрицу различными способами, а затем добавить нули, например:
is.na(distances) + 0L # if you don't have `NA` values in your matrix
или просто
(!distances) + 0L # if you don"t have zeroes in your matrix
если у вас может быть ноль или NA
значение в матрице,row(distances)
(или col(distances)
) не будет:
is.na(row(distances)) + 0L
(!row(distances)) + 0L
и можно заставить всю матрицу, чтобы быть NA
значения, как способ получения матрицы 1
s, затем вычесть 1
:
is.na(distances + NA) - 1L
или
(distances == "Klausos Klausos") + 0L # if you don't have your name as one of the values
другой (немного неудобный) метод будет использовать dim<-
`dim<-`(rep_len(0L, length(distances)), dim(distances))
вы можете просто ввести
matrix( rep( 0, len=25), nrow = 5)
Это должно работать по желанию.
Edit: Я сделал небольшую ошибку (см. комментарий) и исправили ее.