1. ホーム
  2. r

[解決済み] 行列をゼロ(0)で埋める方法

2022-02-05 16:15:39

質問

行列の距離を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

また、行列全体を強制的に 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))