私は行列を持っている:
閉じる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]] )