我有如下数据(包含多个矩阵对象的列表):
$matrix_1
26/03/2012 02/04/2012 09/04/2012 16/04/2012 23/04/2012 30/04/2012 07/05/2012 14/05/2012 21/05/2012 28/05/2012
26/03/2012 500 40 30 20 21 18 8 7 8 5
02/04/2012 NA 100 25 19 16 15 10 6 7 8
09/04/2012 NA NA 200 55 50 45 38 35 34 32
16/04/2012 NA NA NA 400 50 30 20 10 12 7
$matrix_b
26/03/2012 02/04/2012 09/04/2012 16/04/2012 23/04/2012 30/04/2012 07/05/2012 14/05/2012 21/05/2012 28/05/2012
26/03/2012 500 40 30 20 21 18 8 7 8 5
02/04/2012 NA 100 25 19 16 15 10 6 7 8
09/04/2012 NA NA 200 55 50 45 38 35 34 32
16/04/2012 NA NA NA 400 50 30 20 10 12 7
现在,我已经编写了一个循环,以使用我自己指定的曲线函数的NLS将曲线拟合到数据的每一行。即对于matrix_a第26/03/2012行,我正在针对这些数据点拟合曲线:
500 40 30 20 21 18 8 7 8 5
在我的循环中,我提取曲线系数以供以后使用
有什么方法可以向量化此方法吗?这样我就不必使用循环了吗?
我以这种方式对每行使用NLS:
fit.function <- function(a,x,b)
{return(a*x^b)}
mod <- nls(values ~ fit.function(a,index_of_values,b))
其中index_of_values是1、2、3等。(即列号)
感谢您的帮助,我最终使用sapply并成功了
即这是我的代码片段:
fit.function <- function(a,x,b)
{return(a*x^b)}
xx<-sapply(setNames(1:10,rownames(dataset[1:10])), function(i) {
to_predict= dataset[i,]
ind = dataset2[i,]
mod=nls(to_predict~ fit.function(a,ind,b))
return(c(summary(mod)$coefficients[1],summary(mod)$coefficients[2]))
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句