在nls运行过程中出现下列问题:
kestimation=nls(y~kest(don_i,k1,b,pas=pas,type="parameter_value"),start=list(k1=1,b=0),algorithm="port",lower=c(0,-1000),upper=c(1000,1000))
Error in model.frame.default(formula = ~y + don_i) :
invalid type (list) for variable 'don_i'
其中kest是自己写的一个函数,它需要don_i (data.frame),k1 (参数),b (参数),pas=1,type(运行模式)。
在实际运用的过程中,我们有一个总的data.frame, 比如说叫它don
我们根据一定的方式从里面提取数据 比如
don_i<-don[don$fruit=="GR"&don$genotype=="CS",],我们有3种fruit, 100多种genotype.
奇怪的事情是在某些fruit和genotype组合的情况,我们得到上面的错误信息,而其它fruit和genotype组合情况下nls则没有问题!
因为所有的数据都是从同一个数据中提取出来的,就有些想不通为什么还在一些特殊情况下出现问题了?
碰到这个问题之后,尝试着察看了一下原因,最后发现,如果把don_i这个data.frame中减掉一列(当然这一列kest方程不需要),那么nls就不报错了;而且如果加上几列,有时也会让报错消失。似乎它需要一定的列数??
str(don_i)表明don_i就是一个data.frame
'data.frame': 11 obs. of 11 variables:
因为数据比较大,kest函数很长,所以就不在此给出,需要的话可以请留下邮箱,我可以发一个可以重复的例子过去。
多谢帮助!