使用for(向量中的变量){在R中确定k值

时间:2018-01-16 09:41:53

标签: r vector decomposition

我试图找到k的值,它是Decompostion models中的常量

Wt = W0 e^-kt

我正在使用R脚本来计算它。但是,我在选择数据集方面遇到了麻烦。

示例数据

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)

在我的原始数据中,它只选择四个这样的数据集(这很好)可能是因为有最大Repli值?

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

然后我运行以下命令,然后我得到这4个数据的K值。现在我想选择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

我可以提供原始数据。

1 个答案:

答案 0 :(得分:0)

如果要检查已处理的子集,可以使用另外的变量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