我有一张矩阵:
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中是否有一种简单的方法可以做到这一点?
非常感谢任何帮助。
感谢。
答案 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]] )