2013-10-29 107 views
2

代碼如下函數參數列表中的函數(x)在R中意味着什麼?

crossval <- function(data, lambda=0, ytrans=function(x) x) 

我想知道在函數參數列表有什麼功能(X)意味着什麼呢?如果一次又一次或東西調用同一個功能?如果是這樣,有可能調用函數crossval本身嗎?我需要變量ytrans嗎?我們不能只調用函數體中的函數(x)嗎?

回答

1

默認函數是返回它傳遞的x值的函數。如果你不提供一個,那就是將要使用的功能。

2

@duffymo覆蓋它,但這裏有一個更長的解釋。

你在那裏看到的稱爲匿名函數。該函數基本上返回相同的對象(=什麼都不做)。這也可以明確地寫成一個命名的功能

newFunction <- function(x) { 
    x 
} 

那麼這將是

crossval <- function(data, lambda=0, ytrans = newFunction) 

這是默認值,就像在lambda=0,除了默認值是一個函數本身。

+0

從技術上講,我認爲OPs案例中的默認值是來自匿名函數的返回值,而不是函數本身(如果我理解正確的話)。我不明白它的用途,但這將是一個有用的解釋。 –

+0

這就是我的意思 - 它返回(相同)的對象,因爲它通過。 –

+0

好吧,我想我得到它,讓我們說'newFunction'正方形'x',那麼你可以做'foo < - function(x,y )y(x)'和'foo(2,newFunction)'返回'4'。 +1 –

相關問題