Как заполнить матрицу нулем (0)

Мне нужно заполнить матричные расстояния 0. Как я могу это сделать?

distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)

Ответ 1

Я просто поставлю его здесь, так как в комментариях есть куча хороших ответов

Вы можете создать совершенно новую матрицу, используя размеры вашей старой матрицы

matrix(0L, nrow = dim(distances)[1], ncol = dim(distances)[2])  # @nrussell

Или, аналогично, чтобы сохранить несколько нажатий клавиш (поскольку a 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))

Ответ 2

Вы можете просто ввести

matrix( rep( 0, len=25), nrow = 5)

Это должно работать по желанию.

Изменить: Я сделал небольшую ошибку (см. комментарий) и исправил ее.

Ответ 3

Это код, который я использую для неквадратной матрицы! Пример для матрицы 4 X 6

matrix(rep(0,4*6),nrow=4,ncol=6)