繁体   English   中英

R中的矩阵元素除法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM