R - rの行列要素分割

私は行列を持っている:

閉じるclose.1 close.2 1 38.050 22.320 23.115 2 37.650 22.150 23.055 3 37.295 22.090 23.090

そして、私は "クローズ"を "close.1"、 "close"を "close.2"で、最後に "close.1"を "close.2"で各行に分割したいと考えています。

私はこれを解決する恐ろしいループを書くことができると認識していますが、Rでこれを行う簡単な方法があるかどうか知りたいと本当に感謝しています。

どんな助けでも大歓迎です。

ありがとう。

回答:

回答№1の場合は3

あなたが実際に持っているのはデータフレームです。本質的に行列ですが、あなたは正しいですが、列の名前を使って列にアクセスします。

データフレームの各列にアクセスするには、次のようなコマンドを使用します。

Matrix$close

私はあなたの質問を正しく理解していれば、これはあなたに望ましいデータフレームを与えるはずです。

New_DataFrame <- data.frame(close = Matrix$close / (Matrix$close.1 * Matrix$close.2), close.1 = Matrix$close.1 / Matrix$close.2)

これらの操作はすべて、個々の行ごとに実行されます。

答えをデータフレームの代わりに行列の形にしたい場合は、次のようにします:

New_Matrix <- data.matrix(New_DataFrame)

また、マトリックスからデータフレームに切り替えるのは簡単です:

New_DataFrame <- data.frame(New_Matrix)

希望が助けてくれる!


回答№2については2

もし mat あなたの行列です mat[,1]/mat[,2] 各行の要素ごとの除算を与えます。もし mat 実際にはdata.frameは行列ではなく、上のように動作します mat$close/mat$close.1.


回答№3の場合は0
> combn(1:3, 2)
[,1] [,2] [,3]
[1,]    1    1    2
[2,]    2    3    3
> apply(combn(1:3, 2), 2, function(x) mat[, x[1]]/mat[,x[2]] )