[英]Matrix element division in 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”除以“ close.1”,将“ close”除以“ close.2”,最后将“ close.1”除以“ close.2”。
我知道我可以编写一个可怕的寻找循环来解决此问题,但我真的很想知道R中是否有简单的方法可以做到这一点?
任何帮助将不胜感激。
谢谢。
您实际拥有的是一个数据框。 没错,它实际上是一个矩阵,但是您可以使用列的名称来访问列。
可以通过如下命令来访问数据帧的每一列:
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)
希望有帮助!
如果mat
是矩阵,则mat[,1]/mat[,2]
为您提供每行的按元素划分。 如果mat
实际上是一个data.frame而不是一个矩阵,那么上面的方法和mat$close/mat$close.1
。
> 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]] )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.