可能的解决方案涉及将采样的索引存储在单独的命名向量中。
train_idx <- sample(1:nrow(mydata),1000,replace=FALSE) train <- mydata[train_idx,] # select all these rows test <- mydata[-train_idx,] # select all but these rows
另外,知道了 data.frame 的 row.names 属性必须包含唯一值, 你也可以设置,例如
data.frame
row.names
test <- mydata[!(row.names(mydata) %in% row.names(train)), ]
但第二种解决方案慢了2倍 mydata <- data.frame(a=1:100000, b=rep(letters, len=100000)) ,按照衡量 microbenchmark() 。
mydata <- data.frame(a=1:100000, b=rep(letters, len=100000))
microbenchmark()