【发布时间】:2014-08-02 17:07:09
【问题描述】:
想象这两个列表如下:
seq<-seq(1,16)
L1<-list(A=seq, B=seq, C=seq, D=seq)
v1=c(11,15,17,19,21,22,24,25,26,27,28,28,29,29,30,30)
v2=c(14,19,23,24,26,27,28,29,30,30,31,32,32,32,32,33)
v3=c(2,4,5,6,6,7,8,8,9,9,9,10,10,10,11,11)
v4=c(8,13,17,20,22,24,26,27,28,29,30,31,32,33,33,34)
L2<-list(A=v1,B=v2,C=v3,D=v4)
现在我想做的是用 nls 公式来拟合这些列表,L1$A 和 L2$A,L1$B 和 L2$B 等等。我可以单独处理每个向量,例如:
nls.A<-nls(L2.A~(a/b)*(1-exp(-b*L1.A)),
start=list(a=1, b=0.1),
trace= TRUE, data=data.frame(L1$A, L2$A))
但我想对每个 list 的四个四个元素执行此操作,并检索一个对象,该对象也是一个包含所有四个 ($A, $B, $C, $D) 拟合结果的列表。
我尝试过使用 for 循环,虽然不太推荐,像这样
for (i in L1) {
nls(L2.i~(a/b)*(1-exp(-b*L1.i)),
start=list(a=1, b=0.1),trace= TRUE,
data=data.frame(L1$i, L2$i))
}
但这也不能回答我的问题(我真的需要该死的列表)我认为带有 lapply 的东西是理想的,但不知道如何使用 lapply 做这样的事情。有什么想法吗?
【问题讨论】: