簡體   English   中英

從R中的nls模型中提取data.frame名稱和因變量名稱

[英]extract data.frame name and dependent variable name from nls model in R

假設我讓nls模型適合R中的某些數據d

#fake data
x<- seq(1,10,by=0.1)
y<- 1*(x / (2 + x))
y<- y + rnorm(0, 0.05, n =length(y))
d<- data.frame(x,y)

#fit the nls model
model <- nls(y ~ v1*(x/(v2 + x)), start=c(v1=0.9,v2=2.1))

我想從model對象返回數據框的名稱( d )和從屬變量的名稱( y )。

您可以從模型對象獲取這些值,如下所示:

# Data frame name
as.character(model$data)

# Dependent variable name
as.character(formula(model)[2])

你問我怎么知道的? 好吧,我沒有,但是您通常可以通過查看R函數返回的模型對象的結構str(model)控制台中的str(model)類型str(model)來弄清楚類似的事情。

例如,在這種情況下, model是具有六個元素的列表。 第一個稱為m元素本身就是一個列表。 這是輸出的前幾行:

str(model)
 List of 6 $ m :List of 16 ..$ resid :function () ..$ fitted :function () ..$ formula :function () 

請注意, m的元素之一稱為formula ,它是一個函數。 因此,我嘗試在控制台中鍵入formula(model)並得到以下信息:

 y ~ v1 * (x/(v2 + x)) 

然后,我鍵入str(formula(model))來查看實際返回的是哪種對象formula()

 Class 'formula' length 3 y ~ v1 * (x/(v2 + x)) ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 

請注意,它返回一個具有三個元素( length 3 )的對象。 第二個元素恰好包含因變量名稱。 將其包裝為as.character會將其更改為字符串,這是我假設要的。

現在為數據框。 請注意, str(model)返回的列表元素之一稱為data 因此,我在控制台中輸入了model$data並得到了:

 d 

再次,我將其包裝為as.character以將輸出轉換為字符串。

可能有更好的方法來解決此問題,但不要低估僅通過在函數返回的對象內部進行瀏覽就可以完成的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM