在R中矢量化构建多个模型

在R中矢量化构建多个模型,r,matrix,vectorization,curve-fitting,nls,R,Matrix,Vectorization,Curve Fitting,Nls,我的数据(包含多个矩阵对象的列表)如下所示: $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

我的数据(包含多个矩阵对象的列表)如下所示:

$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和我自己指定的曲线函数将曲线拟合到数据的每一行。 i、 e.对于2012年3月26日矩阵a行,我将根据以下数据点拟合曲线:

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))

fit.function谢谢你的帮助,我最终使用了sapply,它成功了

i、 e.以下是我的一些代码片段:

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]))
})

fit.function能否提供一些适合您的曲线的代码片段?您好。看看
sapply
函数,它可能就是您想要的。我添加了一些代码片段