我有一个嵌套的数据列表.它的长度是132,每个项目都是长度为20的列表.是否有一种快速方法将此结构转换为具有132行和20列数据的数据框?
以下是一些要使用的示例数据:
l <- replicate(
132,
list(sample(letters, 20)),
simplify = FALSE
)
Run Code Online (Sandbox Code Playgroud) 给定一个列表列表,我的目标是改变其结构(R语言).
所以,我想将嵌套列表的元素作为第一层列表的元素.
可能更好地说明我的目的.鉴于:
z <- list(z1 = list(a = 1, b = 2, c = 3), z2 = list(b = 4, a = 1, c = 0))
Run Code Online (Sandbox Code Playgroud)
我想要一个等效于后续R对象的输出:
o <- list(a = list(z1 = 1, z2 = 1), b = list(z1 = 2, z2 = 4), c = list(z1 = 3, z2 = 0))
Run Code Online (Sandbox Code Playgroud)
我创建了自己的解决方案,我将在下面附上,但如果有更好的解决方案,请告诉我.
revert_list_str_1 <- function(ls) {
res <- lapply(names(ls[[1]]), function(n, env) {
name <- paste(n, 'elements', sep = '_')
assign(name, vector('list', 0))
inner …Run Code Online (Sandbox Code Playgroud) 我有一个巨大的列表(700个元素),每个元素是一个长度为16,000的向量.我正在寻找一种有效的方法将列表转换为数据帧,方式如下(这只是一个模拟示例):
lst <- list(a = c(1,2,3), b = c(4,5,6), c = c(7,8,9))
Run Code Online (Sandbox Code Playgroud)
我要找的最终结果是:
# [,1] [,2] [,3]
#a 1 2 3
#b 4 5 6
#c 7 8 9
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,但是没有按照我的意愿工作:
library(data.table)
result = rbindlist(Map(as.data.frame, lst))
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?请记住,我的真实示例有很大的维度,我需要一种相当有效的方法来执行此操作.
非常感谢你!