2012-11-14 66 views
0

我只是想寫一個R函數,它給了我這個表達式的迴歸函數:y〜(k,l,m,n)。這些字母代表非線性函數中的參數。當我以封閉形式(y〜())寫模型時,這個R函數應該從模型中提取回歸函數。它可以是任何具有兩個或更多參數的非線性函數。任何人都可以幫助我如何做到這一點?從公式中獲得迴歸函數R

+0

其實我還沒有嘗試過任何東西。我只是看看R中的nls函數。我試圖理解它在這個函數中是如何處理的。 –

+0

我需要一些R如下所示:cll < - formula [[length(formula)]] func < - get(as.character(cll [[1L]])) if(!is.null( pn < - attr(func,「pnames」))) as.character(as.list(match.call(func,call = cll))[ - 1L] [pn]) –

+0

* ?你的意思是健康嗎?或者你是從一個'nls'對象中提取,還是試圖編寫你自己的'nls'版本? – mnel

回答

1

我覺得你的關鍵是得到一個公式,將解析

你不能只是有y~(a,b,d),你需要一些函數名,即y ~ f(a, b, d)

然後你可以使用all.vars提取變量名並建立模型矩陣和寫你的擬合函數

all.vars(y ~ f(a,b,d)) 

## [1] "y" "a" "b" "d" 

# get the response 

as.character(y ~ f(a,b,d))[2] 
## [1] "y" 

您可以使用這些從搜索路徑中提取對象

+0

非常感謝!我很抱歉。括號前我忘了放置函數。 –