Полагаю, вы хотите, чтобы строки матрицы были делами. Тогда все, что вам нужно, это sample
и split
:
X <- matrix(rnorm(1000),ncol=5)
id <- sample(1:5,nrow(X),replace=TRUE)
ListX <- split(x,id) # gives you a list with the 5 matrices
X[id==2,] # gives you the second matrix
Я бы поработал со списком, так как он позволяет вам делать что-то вроде:
names(ListX) <- c("Train1","Train2","Train3","Test1","Test2")
mean(ListX$Train3)
, что упрощает чтение кода и не позволяет создавать тонны матриц в рабочей области. Вы обязательно запутаетесь, если поместите матрицы по отдельности в свое рабочее пространство. Используйте списки!
Если вы хотите, чтобы тестовая матрица была меньше или больше других, используйте аргумент prob
sample
:
id <- sample(1:5,nrow(X),replace=TRUE,prob=c(0.15,0.15,0.15,0.15,0.3))
дает вам тестовую матрицу, которая в два раза больше матриц поезда.
Если вы хотите определить точное количество дел, sample
и prob
не лучшие варианты. Вы можете использовать трюк, как:
indices <- rep(1:5,c(100,20,20,20,40))
id <- sample(indices)
чтобы получить матрицы с соответственно 100, 20, ... и 40 случаями.