1

私はマトリックスを持っています:

    close 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」を「close.1」で、「close」を「close.2」で、最後に「close.1」を「close.2」で分割したいと思います。

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

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

ありがとう。

4

3 に答える 3

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)

お役に立てば幸いです。

于 2012-07-06T20:05:03.167 に答える
2

matが行列の場合mat[,1]/mat[,2]、各行の要素ごとの除算が得られます。matが実際には行列ではなくdata.frameである場合、上記は同様に機能しますmat$close/mat$close.1

于 2012-07-06T20:04:57.130 に答える
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]] )
于 2012-07-06T20:21:45.717 に答える