首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决predict.lm()错误:变量'affinity‘的类型为"nmatrix.1“,但提供的类型为"numeric”

如何解决predict.lm()错误:变量'affinity‘的类型为"nmatrix.1“,但提供的类型为"numeric”
EN

Stack Overflow用户
提问于 2014-03-12 05:55:03
回答 1查看 6.6K关注 0票数 6

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

代码语言:javascript
复制
mylm = lm(formula = prodRate~affinity, mydf)

其中mydf是一个数据帧,如下所示:

代码语言:javascript
复制
 prodRate    affinity

1  2643.5744 0.005164040

2  2347.6923 0.004439970

3  1783.6819 0.003322830

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

代码语言:javascript
复制
my_pred= predict(mylm,newdata=data.frame(affinity=seq(0,1,0.1)) )

错误:变量'affinity‘与类型"nmatrix.1“一起安装,但提供了类型"numeric”。

为什么会这样呢?如何修复它?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-03-12 22:55:44

多亏了与user20650的讨论(见上),这个bug被识别出来了:

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

mydf$affinity = matrix(somenumber)

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

solution1:将mydf修复为以下mydf <- data.frame(prodRate , affinity)。即,确保mydf的亲和力列具有类似向量的结构

solution2:保留原始的mydf,但强制将mydf$ newdata=data.frame(affinity=seq(0,1,0.1))作为形式:mylm中的向量,以便线性模型"mylm“中的自变量”solution2“具有类似向量的结构,而不是类似矩阵的结构,这将与predict(mylm,newdata=...)中的向量一致,后者是一个数值向量。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22337495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档