我正在尝试将功能应用于某些天然气生产数据。使用nls函数我可以从单列数据中获得良好的结果,但是想要使用apply()函数在整个数据集上使用方程。我在下面创建了函数(france.model()),但它仅在我输入数据框和特定列(dataframe $ column)时才有效。
我可以让apply()函数进行正确的交互次数,但是它使用了第一列,它没有多大用处。
我的脚本如下:
Timex<-c(0, 3, 6, 12, 24, 42, 60, 86)
#
model<- nls(TotalMay$C11 ~ A-(B*(Q^Timex)*(Z^sqrt(Timex))),
data = TotalMay,
start = list(A = 251.5, B = 251.5, Q = 0.98, Z = 0.92))
summary(model)
这只是为了表明方程式本身可以正常工作。但是,为了把它变成一个应用(函数,我需要把方程本身变成一个函数:
france.model <- function(i){nls(i ~ A-(B*(Q^Timex)*(Z^sqrt(Timex))),
data = i,
start = list(A = 251.5, B = 251.5, Q = 0.98, Z = 0.92))
summary(model)}
我想运行它以便我可以将数据帧插入函数(i)
当我运行它时,我收到以下错误:
> france.model(TotalMay)
Error in model.frame.default(formula = ~i, data = i) :
invalid type (list) for variable 'i'
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
Called from: model.frame.default(formula = ~i, data = i)
&#39; TotalMay&#39;是我想要使用的datafram,按列运行nls模型。
然后我需要将此函数放入apply()函数中,如下所示:
apply(TotalMay, MARGIN = 2, FUN= france.model(i))
据我所知,应用FUN = won,让我在任何情况下都指定数据帧。