[英]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.