相关疑难解决方法(0)

R - 列表到数据框

我有一个嵌套的数据列表.它的长度是132,每个项目都是长度为20的列表.是否有一种快速方法将此结构转换为具有132行和20列数据的数据框?

以下是一些要使用的示例数据:

l <- replicate(
  132,
  list(sample(letters, 20)),
  simplify = FALSE
)
Run Code Online (Sandbox Code Playgroud)

r list dataframe

470
推荐指数
16
解决办法
68万
查看次数

还原列表结构

目标

给定一个列表列表,我的目标是改变其结构(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)

r list

20
推荐指数
3
解决办法
2984
查看次数

将大型列表转换为数据帧的快速方法

我有一个巨大的列表(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)

有什么建议吗?请记住,我的真实示例有很大的维度,我需要一种相当有效的方法来执行此操作.

非常感谢你!

performance r list dataframe

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

list ×3

r ×3

dataframe ×2

performance ×1