2012-02-01 82 views
0

更新嘗試的更多清晰度: 我確實調查了我的書籍和許多網站,我確信我根本沒有搜索正確的關鍵詞。試圖將函數應用於倒置矩陣和向量

我創建了一個將矩陣乘以向量(全矩陣乘法)的函數,您將在代碼中看到該向量。到目前爲止,這很好,工作。我輸入我的功能和它的參數:

m<- matrix(1:9, nrow= 3, ncol=3) 
f <- function(x,y,z) {(as.vector(y)%*%x%*%as.vector(y))*z} 
f(m,rep(1,3),2) 

此輸出: [1] [1,] 90

x和y保持不變,但Ž會有所不同。

所以我想用一個向量來獲得多個輸出。

z<- as.vector(1,2,3) 

我已經試過像這樣的應用功能:

apply (c(rep(m,3),rep(1,3),rep(2,3)),1,f) 

但是,這會產生一個錯誤。

錯誤:意外「」‘應用((REP(男,3),’

所以我的問題是你怎麼做矩陣乘法,然後乘上輸出到每個元素的矢量繪圖?

我也認識到,一個答案是簡單的,然後再創建一個執行矩陣乘法函數另一種導致次標量,但我們可以假設,不能作爲解決乘法。

在此先感謝您的幫助

+0

你想要什麼還不清楚:你想要一個「輸出向量」,但輸入的哪一部分應該改變?你的錯誤只是'c'在'c(rep(...',但你可能想要使用'sapply'如果只有一部分輸入變化,或者'mapply'如果幾個變化的話 – 2012-02-01 06:05:21

+0

謝謝,mappply工作。 – user1181337 2012-02-01 19:26:12

回答

0

你的函數需要3個參數,但是當你把它應用到應用中時,你只需要把它放在f中。如果你只在函數中有一個參數,或者它們被預置爲一個特定的值,但你的函數沒有y和z預設,這個(只用f)就可以工作。

這個snipet在這裏不是什麼。你需要把它存儲爲載體,列表等

(rep(m,3),rep(1,3),rep(2,3)) 

所以你需要

c(rep(m,3),rep(1,3),rep(2,3)) 

list(rep(m,3),rep(1,3),rep(2,3)) 

我真的不知道你在想什麼做到這一點,所以給我們一個你期望得到結果的例子可能會有所幫助。