1

我有一个矩阵:

    关闭 close.1 关闭.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”。

我知道我可以编写一个可怕的寻找循环来解决这个问题,但我真的很感激知道在 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 回答