我使用split进行了多个列表:
mylists <- split (df, interaction(df$age, df$nation)
通过它,我们得到了1000个列表,mylists[[1]]
,mylists[[2]]
,... mylists[[1000]]
我们如何制作(对应)1000个数据框,其中包含1000个列表的信息? (当我尝试通过将列表转换为循环中的数据帧时,它不起作用,因为我们需要初始化1000个数据帧的向量。)
答案 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