Мне нужно заполнить матричные расстояния 0. Как я могу это сделать?
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
Мне нужно заполнить матричные расстояния 0. Как я могу это сделать?
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
Я просто поставлю его здесь, так как в комментариях есть куча хороших ответов
Вы можете создать совершенно новую матрицу, используя размеры вашей старой матрицы
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))
Вы можете просто ввести
matrix( rep( 0, len=25), nrow = 5)
Это должно работать по желанию.
Изменить: Я сделал небольшую ошибку (см. комментарий) и исправил ее.
Это код, который я использую для неквадратной матрицы! Пример для матрицы 4 X 6
matrix(rep(0,4*6),nrow=4,ncol=6)