行列距離を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
は2次元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
_
また、_1
_のマトリックスを生成し、_1
_を減算する方法として、マトリックス全体をNA
値にすることができます。
_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)
これは希望どおりに動作するはずです。
編集:小さなエラー(コメントを参照)を作成し、修正しました。