R中的矩阵元素划分

时间:2012-07-06 19:59:06

标签: r

我有一张矩阵:

    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.1”,“close”除以“close.2”,最后将“close.1”划分为“close.2”。

我知道我可以编写一个可怕的寻找循环来解决这个问题,但我真的很感激知道在R中是否有一种简单的方法可以做到这一点?

非常感谢任何帮助。

感谢。

3 个答案:

答案 0 :(得分: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)

希望有所帮助!

答案 1 :(得分:2)

如果mat是您的矩阵,那么mat[,1]/mat[,2]会为您提供每行的元素划分。如果mat实际上是data.frame而不是矩阵,那么上述工作就像mat$close/mat$close.1一样。

答案 2 :(得分: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]] )