数据框保存列和数据结构的R列表

时间:2019-03-03 13:11:09

标签: r dataframe statistics

我有一个像这样的数据框:

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
...

我什至可以看到列的名称。

1 个答案:

答案 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