更新时间:2023-11-18 21:25:34
我查看了rlist :: list.flatten()的源代码,并将源代码复制到一个新函数中以避免这种依赖性.
I looked at the source for rlist::list.flatten() and copied the source into a new function to avoid that dependency.
my_flatten <- function (x, use.names = TRUE, classes = "ANY")
{
#' Source taken from rlist::list.flatten
len <- sum(rapply(x, function(x) 1L, classes = classes))
y <- vector("list", len)
i <- 0L
items <- rapply(x, function(x) {
i <<- i + 1L
y[[i]] <<- x
TRUE
}, classes = classes)
if (use.names && !is.null(nm <- names(items)))
names(y) <- nm
y
}
alist <- list(list1 = list(a = 1, b = 2, blist = list(a = 3, b = 4)),
list2 = list(a = 1, b = 2, blist = list(a = 3, b = 4)))
flat_list <- my_flatten(alist)
str(flat_list)
结果:
List of 8
$ list1.a : num 1
$ list1.b : num 2
$ list1.blist.a: num 3
$ list1.blist.b: num 4
$ list2.a : num 1
$ list2.b : num 2
$ list2.blist.a: num 3
$ list2.blist.b: num 4