2016-01-17 36 views
2

我是R的新手,正在努力做好自己的功課。我看了很多地方,我找不到任何有關如何製作包含函數的函數的說明。我需要我的矩陣[A]在其中具有像cos(x)和sin(x)這樣的函數,然後我需要能夠計算[A(o度)]或[A(30度)]等等。有沒有辦法做到這一點?感謝您的幫助在函數中使用函數:R

+3

這是我記得的答案:http://stackoverflow.com/questions/20297711/r-hessian-matrix/20301977#20301977。我承認它花了四次搜索,因爲我沒有記住正確的過程應用。 –

回答

1

這是一個矩陣存儲功能的另一種方法:

M <- matrix(c(function(x) {cos(x)}, 
       function(x) {sin(x)}, 
       function(x) {tan(x)}, 
       function(x) {asin(x)}), 
      2,2) 

M[1,1] 
#------- 
[[1]] 
function (x) 
{ 
    cos(x) 
} 

訪問每個列表的內容(從矩陣物體抽提後),您需要使用[[,然後將其可作爲一個功能:

M[1,1][[1]](pi) 
#[1] -1 

斯克裏文的建議的作品,以及和肯定是更經濟:

> M2 <- matrix(c(cos, sin, tan, asin), 2,2) 
> M2 
    [,1] [,2] 
[1,] ? ? 
[2,] ? ? 

> M2[1,1][[1]](pi) 
[1] -1 
> class(M2[1,1]) 
[1] "list" 
> class(M2[1,1][[1]]) 
[1] "function" 
+0

難道你不能在所有這些函數上使用'c(cos,sin,tan,asin)'而不是'function(x)'? –

+0

我確實嘗試過這樣的事情,但也許我放棄得太快了。當我在表達式對象中使用它們時,它們只是名稱,但現在它似乎工作正常。 –