我想更好地瞭解外部工作和如何矢量化函數。以下是我正在嘗試做的一個簡單示例:我有一組數字2,3,4
。對於每個組合(a,b)
在對角線上創建對角矩陣a a b b b
,然後對其進行處理,例如,計算其行列式(這僅用於演示目的)。計算結果應該寫成3乘3的矩陣,每個組合使用一個字段。R:外部,矩陣和向量化
下面的代碼不工作 - 顯然,outer
(或my.func
)不明白,我不希望被應用於整個lambdas
載體 - 你可以看到這種情況,當你取消對print
包括命令。
lambdas <- c(1:2)
my.func <- function(lambda1,lambda2){
# print(diag(c(rep(lambda1,2),rep(lambda2,2))))
det(diag(c(rep(lambda1,2),rep(lambda2,2))))
}
det.summary <- outer(lambdas,lambdas, FUN="my.func")
如何我需要修改我的函數或外部通話這樣的事情表現得像我想?
我想我需要以某種方式向量化我的函數,但我不知道如何以及以何種方式對外部調用進行不同的處理。
編輯: 我已經改變了矩陣的大小,使其不那麼混亂。我想生成4乘4矩陣的對角線,用下面的對角線;在括號內的對應參數lambda1, lambda2
:
1 1 1 1 (1,1)
,1 1 2 2 (1,2)
,2 2 1 1 (2,1)
,2 2 2 2 (2,2)
。
然後,欲計算它們的決定簇(其在此處任意選擇),並把結果放到一個矩陣,它的第一列對應於lambda1=1
,第二至lambda1=2
,行對應於lambda2
選擇。 det.summary
應該是一個2由使用以下值到矩陣:
1 4
4 16
因爲這些是上面列出的對角矩陣的決定因素。
我已經讀了幾次,我仍然不知道你想做什麼。你能展示你想要的結果嗎? – thelatemail
混淆不是我的願望。現在更清楚了嗎? – Roland