初始化多个数据帧

时间:2015-04-06 09:10:29

标签: r data-manipulation

我使用split进行了多个列表:

mylists <- split (df, interaction(df$age, df$nation)

通过它,我们得到了1000个列表,mylists[[1]]mylists[[2]],... mylists[[1000]]

我们如何制作(对应)1000个数据框,其中包含1000个列表的信息? (当我尝试通过将列表转换为循环中的数据帧时,它不起作用,因为我们需要初始化1000个数据帧的向量。)

1 个答案:

答案 0 :(得分:1)

如果我完全理解你的问题,我认为你根本不需要做任何事情,因为列表中的内容已经是数据帧。让我们使用我们稍微修改的iris数据框进行一些演示。

iris2 <- iris
iris2$Species2 <- rev(iris2$Species)
mylists <- split(iris2, interaction(iris2$Species, iris2$Species2))

length(mylists)

# [1] 9

sapply(mylists, class)

#     setosa.setosa     versicolor.setosa      virginica.setosa 
#      "data.frame"          "data.frame"          "data.frame" 
# setosa.versicolor versicolor.versicolor  virginica.versicolor 
#      "data.frame"          "data.frame"          "data.frame" 
#  setosa.virginica  versicolor.virginica   virginica.virginica 
#      "data.frame"          "data.frame"          "data.frame" 

您可以从数字或名称中提取这些数据框:

head(mylists[[3]])

#     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species Species2
# 101          6.3         3.3          6.0         2.5 virginica   setosa
# 102          5.8         2.7          5.1         1.9 virginica   setosa
# 103          7.1         3.0          5.9         2.1 virginica   setosa
# 104          6.3         2.9          5.6         1.8 virginica   setosa
# 105          6.5         3.0          5.8         2.2 virginica   setosa
# 106          7.6         3.0          6.6         2.1 virginica   setosa

names(mylists)

# [1] "setosa.setosa"         "versicolor.setosa"     "virginica.setosa"     
# [4] "setosa.versicolor"     "versicolor.versicolor" "virginica.versicolor" 
# [7] "setosa.virginica"      "versicolor.virginica"  "virginica.virginica"  

head(mylists[["virginica.setosa"]])

#     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species Species2
# 101          6.3         3.3          6.0         2.5 virginica   setosa
# 102          5.8         2.7          5.1         1.9 virginica   setosa
# 103          7.1         3.0          5.9         2.1 virginica   setosa
# 104          6.3         2.9          5.6         1.8 virginica   setosa
# 105          6.5         3.0          5.8         2.2 virginica   setosa
# 106          7.6         3.0          6.6         2.1 virginica   setosa