我有以下数据框。
Data_Frame <- structure(list(Factor_1 = c("AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "AA", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "BB", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "CC", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD", "DD"), Factor_2 = c("aa", "aa", "aa", "bb", "bb", "bb", "cc", "cc", "cc", "dd", "dd", "dd", "ee", "ee", "ee", "aa", "aa", "aa", "bb", "bb", "bb", "cc", "cc", "cc", "dd", "dd", "dd", "ee", "ee", "ee", "aa", "aa", "aa", "bb", "bb", "bb", "cc", "cc", "cc", "dd", "dd", "dd", "ee", "ee", "ee", "aa", "aa", "aa", "bb", "bb", "bb", "cc", "cc", "cc", "dd", "dd", "dd", "ee", "ee", "ee"), Factor_3 = c("xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz", "xxx", "yyy", "zzz")), class = "data.frame", row.names = c(NA, -60L))
我想编写一个递归函数,将该数据框拆分为嵌套列表。输出应类似于以下对象。
Split_Data <- lapply(lapply(split(Data_Frame, Data_Frame[, 1]), function (x) {
split(x, x[, 2])
}), function (x) {
lapply(x, function (y) {
split(y, y[, 3])
})
})
换句话说,应该首先根据第一列的值来拆分数据框,然后根据第二列的值来拆分,依此类推,直到所有列都已用于将数据拆分为越来越小的数据框(每次拆分后列表变得越来越嵌套)。
在这个例子中,数据框中只有三列,但实际上,可能有任意数量的列,所以我希望递归函数能够处理任意数量的列。
base
优先考虑 R 解决方案。
谢谢!