我有一个像这样的数据框:
colum1 column2 column3 column4
0.34 0.45 4450 21
0.32 0.46 4451 41
0.41 0.12 2150 38
.
.
.
此数据框包含2000个元素。我想创建一个包含随机选择的行的100个数据框的列表。我已经编写了一个原型:
matrix_sampling<-list()
counter=1
original_data <- a
while( counter < 101) {
sub_sample <- data.frame(original_data[sample(nrow(original_data), 20), ])
matrix_sampling <- c(matrix_sampling, sub_sample)
counter = counter+1
}
但是,当我访问以下矩阵时:
matrix_sampling[[1]]
它打印0.34,我期望第一个数据帧。我真的想要一个像这样的数据结构:
matrix_sampling[1] = dataframe1
matrix_sampling[2] = dataframe2
...
我什至可以看到列的名称。
答案 0 :(得分:3)
您可以使用replicate
。在下面的示例中,我们生成一个包含两个数据帧的列表,每个数据帧包含五行iris
。因此,您需要对此进行相应的调整。
n_rows <- 5
samples <- 2
set.seed(1)
out <- replicate(n = samples,
expr = iris[sample(1:nrow(iris), size = n_rows),],
simplify = FALSE)
out
#[[1]]
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#40 5.1 3.4 1.5 0.2 setosa
#56 5.7 2.8 4.5 1.3 versicolor
#85 5.4 3.0 4.5 1.5 versicolor
#134 6.3 2.8 5.1 1.5 virginica
#30 4.7 3.2 1.6 0.2 setosa
#[[2]]
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#135 6.1 2.6 5.6 1.4 virginica
#141 6.7 3.1 5.6 2.4 virginica
#98 6.2 2.9 4.3 1.3 versicolor
#93 5.8 2.6 4.0 1.2 versicolor
#10 4.9 3.1 1.5 0.1 setosa