dummyVars会预测是否真的返回数据帧吗?

问题描述 投票:2回答:2

predict库中dummyVarscaret方法的documentation明确指出:

预测函数产生一个数据帧。

但是,我制作的每个示例似乎都只是一个矩阵。以下代码是一个示例:

>input<-data.frame(id=c(1, 2, 3), direction=c('up', 'down', 'down'))
>dmy<-dummyVars(" ~ .",input)
>output<-predict(dmy, newdata=input)
>output
  id direction.down direction.up
1  1              0            1
2  2              1            0
3  3              1            0
>class(output)
[1] "matrix"
>is.data.frame(output)
[1] FALSE
>is.matrix(output)
[1] TRUE

我所看到的所有信息都表明文档有误,并且predict函数实际上返回的是矩阵而不是数据帧。发生了什么事?

r dataframe types r-caret dummy-variable
2个回答
1
投票

我认为您是正确的,而文档是错误的。如果您查看源代码,则返回的对象将在函数主体的第19行中创建,如下所示:

x <- model.matrix(Terms, m)

这是一个矩阵对象。创建x之后,函数主体中还有更多代码,但所做的只是更改列名并删除(Intercept)列。在返回之前,它绝不会转换为数据帧。


0
投票

是的,仅此一项工作,就试图以其他方式重现数据帧中的内容:

output<-data.frame(predict(dmy, newdata = input))
print(class(output))
© www.soinside.com 2019 - 2024. All rights reserved.