2013-10-04 41 views
2

我在使用外部函數時遇到困難。我已經看了幾個主題,但一直未能找到解決方案。使用外部函數

我有一個矩陣,價格,包含以下信息:
25 26
我使用外部函數如下這些數字相加相乘:

a = outer(prices[1,1:2],prices[1,1:2],FUN ="*") 

這給了我下面的錯誤:

Error in as.vector(X) %*% t(as.vector(Y)) : 
requires numeric/complex matrix/vector arguments 

但是,如果我做的是完全一樣的東西,但是直接用數字,它會按照我的意願去做:

a = outer(c(25,26),c(25,26),FUN ="*") 

並返回一個2x2矩陣的產品。

任何幫助將不勝感激。

+0

哦,只是爲了澄清,我檢查(使用'類(價格[1,1 ])'價格數組中的變量是整數。 儘管當我剛剛檢查'class(價格[1,1:2])時,它返回「Dataframe」作爲類型。我不確定是否有什麼我可以/需要做的事情呢?謝謝! – Mike

+0

'價格< - as.matrix(價格)','外部'只需要矩陣/數組/矢量作爲參數而不是數據框。 – plannapus

回答

3

你的價格矩陣顯然是一個data.frame而不是matrix。您可以更改:

prices <- as.matrix(prices) 
a <- outer(prices[1,1:2],prices[1,1:2],FUN ="*") 

,也可以直接轉換爲數字,當你使用它:

a <- outer(as.numeric(prices[1,1:2]),as.numeric(prices[1,1:2]),FUN ="*") 
+0

工作完美,非常感謝! – Mike

0
prices <- matrix(c(25,26), nrow=1) 
a = outer(prices[1,1:2],prices[1,1:2],FUN ="*") 

#  [,1] [,2] 
#[1,] 625 650 
#[2,] 650 676