如何解决predict.lm()错误:变量';亲和力';已安装“类型”的;nmatrix.1“;但类型为“;“数字”;供应

如何解决predict.lm()错误:变量';亲和力';已安装“类型”的;nmatrix.1“;但类型为“;“数字”;供应,r,predict,R,Predict,我有一个简单的线性模型: mylm = lm(formula = prodRate~affinity, mydf) 其中,mydf是一个数据帧,看起来像: prodRate affinity 1 2643.5744 0.005164040 2 2347.6923 0.004439970 3 1783.6819 0.003322830 当我使用predict.lm()时,出现了一个错误: my_pred= predict(mylm,newdata=data.frame(af

我有一个简单的线性模型:

mylm = lm(formula = prodRate~affinity, mydf)
其中,mydf是一个数据帧,看起来像:

 prodRate    affinity

1  2643.5744 0.005164040

2  2347.6923 0.004439970

3  1783.6819 0.003322830
当我使用predict.lm()时,出现了一个错误:

my_pred= predict(mylm,newdata=data.frame(affinity=seq(0,1,0.1)) )
错误:变量“affinity”的类型为“nmatrix.1”,但提供了类型为“numeric”


为什么呢?如何修复它?谢谢

多亏了与user20650的讨论(见上文),发现了该漏洞:

mylm=lm(formula=prodRate~affinity,mydf)中的mydf是通过向现有数据框mydf添加一个类似矩阵的列来创建的,如下所示:

mydf$affinity=矩阵(somenumber)

i、 e.mydf中的“亲和性”列由矩阵构成,其结构保持为矩阵。 此矩阵结构与predict(mylm,newdata=…)中newdata=data.frame(affinity=seq(0,1,0.1))中的“affinity”列不一致,后者是一个数值向量

解决方案1:按如下方式修复mydf
mydf这可能是由于您如何创建mydf数据帧。看到这篇文章,我实际上读了那篇文章,但不明白mydf有什么问题,它是一个普通的数据框架,有两列,分别名为“prodRate”和“affinity”。你能给我一些提示吗?你能发布str(mydf)pleasestr(mydf)“data.frame”:16 obs吗。共2个变量:$prodRate:num 2644 2348 1784 1685 1416…$affinity:num[1:16,1]0.00516 0.00444 0.00332 0.00307 0.00271…好的,所以affinity作为[16,1]矩阵而不是向量添加到数据帧中(我的术语可能有点偏离)。您是否使用mydf$affinity创建了数据帧