我尝试使用公式创建sparse.model.matrix
(来自Matrix
包),其中两个因素之间存在交互。如果我的输入数据有多行,这很好,但只要我只有一行,我就会得到错误:
Error in model.spmatrix(t, data, transpose = transpose, drop.unused.levels = drop.unused.levels, : cannot get a slot ("Dim") from an object of type "double"
例如:这不起作用:
f<-(mpg~as.factor(cyl)*as.factor(hp))
y<-mtcars
y$cyl<-as.factor(y$cyl)
y$hp<-as.factor(y$hp)
x<-y[1,]
myMatrix<-Matrix::sparse.model.matrix(f,x)
但是,在两行中重复x会导致错误消失:
x<-rbind(x,x)
myMatrix<-Matrix::sparse.model.matrix(f,x)
我已将错误追溯到
Matrix:::Csparse_vertcat
中的{p> Matrix:::Csparse_horzcat
/ Matrix:::model.spmatrix
但我无法弄清楚用C编写的这个函数正在尝试做什么。有任何想法吗?请注意,就我可以确定,只有在处理两个因素之间的交互的矩阵创建时才会出现此错误。