r-插入包错误 - createDataParition没有观察

时间:2015-10-22 13:26:26

标签: r r-caret

当我尝试在插入符号中运行createDataPartition时,我收到以下错误。

Error in createDataPartition(data1, p = 0.8, list = FALSE) : 
  y must have at least 2 data points

我昨晚运行完全相同的代码,没有任何错误。有什么想法吗?

predictors<- with(df, data.frame(xvar, xvar, xvar, xvar))
data1<-with(dfu2, data.frame(data1))
library(caret)
set.seed(1)
trainingRows<- createDataPartition(data1,
                                   p=.80,
                                   list=FALSE)
> dput(head(data1, 15)) structure(list(data1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L)), .Names = "data1", row.names = c(NA, 15L), class = "data.frame")

数据框data1在我的环境中清晰可见,并具有预期的观察结果。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

这不起作用,因为data1在您的情况下是一个data.frame,而它应该是一个向量,因为它提到了?createDataPartition的文档。见这个例子:

#using your data
data1 <- structure(list(data1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L)), .Names = "data1", row.names = c(NA, 15L), class = "data.frame")

现在,如果我这样做:

> createDataPartition(data1)
Error in createDataPartition(data1) : y must have at least 2 data points

我得到了和你一样的错误。然而,如果是矢量:

> createDataPartition(data1[[1]] )
$Resample1
[1]  1  2  3  4  8  9 12 15

效果很好。

因此,只需在data1[[1]]调用中的代码中使用CreateDataPartition即可。

答案 1 :(得分:0)

我通过将目标数据类型从字符更改为因子来解决相同的问题,因为下采样函数要求响应应该是因子类型。希望这会有所帮助