错误:`i`必须有一个维度,而不是2个维度。在R中的CreateDataPartition中

错误:`i`必须有一个维度,而不是2个维度。在R中的CreateDataPartition中,r,r-caret,R,R Caret,我正在运行一段代码,之前我已经成功运行过多次,现在我遇到了一个奇怪的错误,我不明白: ### Data Splitting trainIndex <- createDataPartition(dataset$isTerminated, p = .8, list = FALSE, times = 1) head(trainIndex) # Step

我正在运行一段代码,之前我已经成功运行过多次,现在我遇到了一个奇怪的错误,我不明白:

### Data Splitting

trainIndex <- createDataPartition(dataset$isTerminated, p = .8, 
                                  list = FALSE, 
                                  times = 1)

head(trainIndex)

# Step 2: Create the training  and testing datasets

testData  <- dataset[-trainIndex, ]
trainingData <- dataset[trainIndex, ]
数据拆分
trainIndex我通过使用sample.split()绕过了它。但我不确定是什么导致了这个问题

sample          = sample.split(dataset$isTerminated, SplitRatio = 0.75)
trainingData    = subset(dataset, sample == TRUE)
testData        = subset(dataset, sample == FALSE)

这似乎很好

代码适用于data.frame:

library(caret)
dataset = data.frame(isTerminated=sample(0:1,100,replace=TRUE),
value=runif(100))
trainIndex <- createDataPartition(dataset$isTerminated, p = .8, 
                                  list = FALSE, 
                                  times = 1)

testData  <- dataset[-trainIndex, ]
trainingData <- dataset[trainIndex, ]
我真的不知道为什么添加-trainIndex会起作用。。如果将其转换为向量,您可以看到它也可以工作:

dataset[c(trainIndex),]
# A tibble: 80 x 2
   isTerminated  value
          <int>  <dbl>
 1            0 0.412 
 2            1 0.488 
 3            1 0.395 
 4            0 0.212 
 5            0 0.0229
 6            0 0.0395
 7            0 0.883 
 8            0 0.601 
 9            0 0.524 
10            0 0.998 
# … with 70 more rows
数据集[c(列车索引),]
#一个tibble:80x2
不定值
1            0 0.412 
2            1 0.488 
3            1 0.395 
4            0 0.212 
5            0 0.0229
6            0 0.0395
7            0 0.883 
8            0 0.601 
9            0 0.524 
10            0 0.998 
#…还有70行

希望更精通tibble的人能加入进来,但是的,底线是要知道它是data.frame还是tibble。

检查数据的类别。如果是TIBLE,请将其转换为data.frame。

在我看来,这就像是一个回归,因为我对以前的工作代码也有相同的错误

# df is a tibble
t <- df[df[, 'condition'] == 'foo','t'][[1]][[1]]

Error: `i` must have one dimension, not 2.
#df是一个tible
T
# df is a tibble
t <- df[df[, 'condition'] == 'foo','t'][[1]][[1]]

Error: `i` must have one dimension, not 2.
df <- as.data.frame(df)
t <- df[df[, 'condition'] == 'foo','t'][[1]][[1]]