繁体   English   中英

R中的矢量运算不一致?

[英]Inconsistent vector operations in R?

我在大学教数学和编程(与R),我是一个良好和一致的符号的忠实粉丝。 请看一下R中的以下简单向量运算:

> v1 <- c(1,2,3)
> v2 <- c(4,5,6)
> v1 %*% v2
     [,1]
[1,]   32
> t(v1) %*% v2
     [,1]
[1,]   32
> v1 %*% t(v2)
     [,1] [,2] [,3]
[1,]    4    5    6
[2,]    8   10   12
[3,]   12   15   18
> t(v1) %*% t(v2)
Error in t(v1) %*% t(v2) : non-conformable arguments
> v1 + v2
[1] 5 7 9
> v1 + t(v2)
     [,1] [,2] [,3]
[1,]    5    7    9
> t(v1) + t(v2)
     [,1] [,2] [,3]
[1,]    5    7    9

我认为这里存在一些不一致的地方:要么我丢失了某些东西,要么R在转置或不转换时得到的结果似乎是相当随意的。

这里的基本逻辑是什么(顺便说一下,它似乎与Matlab完全不同)。

?%*%给出了逻辑:

如果它们是一致的,则将两个矩阵相乘。 如果一个参数是一个向量,它将被提升为行或列矩阵,以使两个参数一致。 如果两者都是向量,它将返回内积(作为矩阵)。

如果它们都是矢量(第一个例子),那么你就得到了内在的产品。 如果你在其中放置一个t( ) ,向量将被转换为列矩阵,并且向量实际上是行矩阵,因此适用的是一致的一致规则。

类似地,“+”的帮助页面表示它会将参数转换为向量 - 并对结果的“形状”给出一些指导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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