如何用零 (0) 填充矩阵
How to fill a matrix with zero (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
或者,类似地,为了节省几次击键(因为matrix
是二维array
的特例)
array(0L, dim(distances)) # @alexis_laz
或者您可以使用 []
保留旧矩阵的结构并用零填充它
distances[] <- 0L # @Richard
或者您可以简单地将所有值乘以零
distances*0L # @akrun
或者更通用的解决方案也将考虑计数 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
的矩阵,然后减去 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)
这应该可以正常工作。
编辑: 我犯了一个小错误(见评论)并已更正。
我需要用 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
或者,类似地,为了节省几次击键(因为matrix
是二维array
的特例)
array(0L, dim(distances)) # @alexis_laz
或者您可以使用 []
保留旧矩阵的结构并用零填充它
distances[] <- 0L # @Richard
或者您可以简单地将所有值乘以零
distances*0L # @akrun
或者更通用的解决方案也将考虑计数 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
的矩阵,然后减去 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)
这应该可以正常工作。
编辑: 我犯了一个小错误(见评论)并已更正。