变量的无效类型(列表)' i'

时间:2018-01-29 12:19:07

标签: r function

我正在尝试将功能应用于某些天然气生产数据。使用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,让我在任何情况下都指定数据帧。

0 个答案:

没有答案