当我尝试在插入符号中运行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
在我的环境中清晰可见,并具有预期的观察结果。有什么想法吗?
答案 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)
我通过将目标数据类型从字符更改为因子来解决相同的问题,因为下采样函数要求响应应该是因子类型。希望这会有所帮助