R - 如何解决 predict.lm() 错误:变量 'affinity' 拟合了类型 "nmatrix.1",但提供了类型 "numeric"



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

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)) )

错误:变量"亲和力"拟合了类型"nmatrix.1",但提供了类型"数字"。

这是为什么呢?如何解决?谢谢!

由于与user20650的讨论(见上文(,该错误被识别出来:

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

mydf$affinity = matrix(somenumber)

即mydf中的"亲和力"列由矩阵组成,其结构保持为矩阵。这个矩阵结构与predict(mylm,newdata=...)newdata=data.frame(affinity=seq(0,1,0.1))的"亲和力"列不一致,后者是一个数值向量。

解决方案1:按如下方式修复MyDF mydf <- data.frame(prodRate , affinity) .即确保mydf的亲和力柱具有类似向量的结构

解决方案 2:保留原始 mydf,但强制 mydf$affinity 作为矢量: mylm <- lm(formula = prodRate ~ as.vector(affinity), mydf)使线性模型"mylm"中的自变量"亲和力"具有类向量结构而不是矩阵状结构,这将与predict(mylm,newdata=...)中的newdata=data.frame(affinity=seq(0,1,0.1))一致,后者是一个数值向量。

最新更新