簡體   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