使用 for (variable in vector) { 在 R 中确定 k 值

Determination of k value using for (variable in vector) { in R

我试图找到 k 的值,它是分解模型中的常数

Wt = W0 e^-kt

我正在使用 R 脚本来计算它。但是,我在 selection 数据集上遇到了问题。

示例数据

Site   Treatment    Month    Repli    WD
W2         0          0      2        1
W3         0          0      1        .9
W7         0          0      3        .7
W12        0          0      4        .7
W2         0          1      2        .4
W3         0          1      1         .3
W7         0          1      3        .3 
W12        0          1      4        .2 
W2         0          3      2        .2
W3         0          3      1        .1
W7         0          3      3        .1  
W12        0          3      4        .1 
W2         0          4      2        .9
W3         0          4      1         .9
W7         0          4      3         .8
W12        0          4      4         .8


k=numeric(max(Cs$Repli))

pred=array(0,dim=c(4,max(Cs$Repli)))  
resid=array(0,dim=c(4,max(Cs$Repli)))
obs=array(0,dim=c(4,max(Cs$Repli)))

现在我遇到问题的部分 非线性回归

for(i in 1:max(Cs$Repli)){
  s1=subset(Cs,Cs$Repli==i)

在我的原始数据中 select 只有四个这样的数据集(没关系)可能是因为具有最大 Repli 值?

Site      Treatment   Month    Repli
W12           0         0       4
W12           0         1       4
W12           0         3       4
W12           0         5       4

然后我 运行 下面的命令然后我得到这 4 个数据的 K 值。现在我想 select W2 或任何其他。我怎样才能做到这一点?我尝试了不同的东西,但我无法得到结果。我尝试使用 %in%,但是 (i) 上面的脚本也在下面使用,所以我不能使用 %in%。任何帮助将不胜感激。

   Month=s1$Month               
   WD=s1$WD         
   nonlin = nls(WD ~ 1*exp(-k*Month), trace=TRUE, start = list(k = .01))
   summary(nonlin)          
   pr=predict(nonlin)       
   res=residuals(nonlin)        
   k[i]=coef(nonlin)[1]
   pred[,i]=pr
   resid[,i]=res
   obs[,i]=WD   
}   #end of nls for loop

我可以提供原始数据

如果你想检查你处理了哪些子集,你可以使用一个额外的变量W_subsets来存储处理过的子集:

# before the nls loop
W_subsets <- rep(list(NA), max(Cs$Repli))

# inside the nls loop
W_subsets[[i]] <- s1

如我所见,W_subsets 的输出是正确的:

[[1]]
    Site    Treatment   Month   Repli   WD
2   W3          0           0       1   0.9
6   W3          0           1       1   0.3
10  W3          0           3       1   0.1
14  W3          0           4       1   0.9

[[2]]
    Site    Treatment   Month   Repli   WD
1   W2          0           0       2   1.0
5   W2          0           1       2   0.4
9   W2          0           3       2   0.2
13  W2          0           4       2   0.9
... etc. to W12