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