首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Model.frame.default中的错误(对象、数据、xlev = xlev):对象不是矩阵

Model.frame.default中的错误(对象、数据、xlev = xlev):对象不是矩阵
EN

Stack Overflow用户
提问于 2016-11-18 16:51:30
回答 3查看 25.7K关注 0票数 3

三天大的时候我就不知道我做错了什么。我试图将一些具有双向交互作用的列发送到glmnet cox模型中。我有一些叫做dtable的data.frame()

编辑以使代码可重复使用

代码语言:javascript
运行
复制
xs<-c("Col1", "Col2", "Col3")
v<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, NA, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, NA, 25, 26, 27, 28, 29, 30)
df<-data.frame(matrix(v,ncol=3))
dm<-as.matrix(df)
dm<-matrix(dm[complete.cases(dm)], ncol=3)
colnames(dm)<-xs
dfdata<-data.frame(dm)
f<-as.formula(time~.*.)
xmatrix<-model.matrix(f, dfdata)[,-1]

当我运行这个程序时,我会得到错误。

代码语言:javascript
运行
复制
Error in model.frame.default(object, data, xlev = xlev) :    
object is not a matrix

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-18 18:19:19

这是因为公式:时间~*。在data.frame()中,没有时间列让公式交叉所有内容。

票数 4
EN

Stack Overflow用户

发布于 2016-11-18 17:15:49

我认为不是这样的:

代码语言:javascript
运行
复制
dm<-matrix(dm[complete.cases(dm)], ncol=3)

你想要这个

代码语言:javascript
运行
复制
dm <- as.matrix(dm[complete.cases(dm), ])

不要吹奏我自己的号角(太多),而是考虑使用glmnetUtils来简化管理数据帧、公式和模型矩阵的任务。

票数 0
EN

Stack Overflow用户

发布于 2016-11-18 17:04:30

我怀疑这个错误是说出了到底出了什么问题。要传递给model.matrix()的对象不是矩阵。class(data)的结果是什么?可能是data.frame。

尝试将as.matrix()添加到对datamodel.matrix()调用中。

另外两个注意事项--不要叫你的data.frames data。也可以用一个可复制的例子在这里提问。你会得到更好的回应。

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

https://stackoverflow.com/questions/40682261

复制
相关文章

相似问题

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