gpt4 book ai didi

r - 如何取消列表并将顶级名称保留为 R 中的新变量

转载 作者:行者123 更新时间:2023-12-05 01:23:46 25 4
gpt4 key购买 nike

有没有一种简单的方法来取消列表并将一级的名称保留为新变量?

工作示例:

# Input list
my_list <- list(Ticker1 = list(date = seq.Date(as.Date('2021-01-01'), as.Date('2021-01-10'), by = 'day'), Value = 1:10),
Ticker2 = list(date = seq.Date(as.Date('2021-01-01'), as.Date('2021-01-10'), by = 'day'), Value = 11:20),
Ticker3 = list(date = seq.Date(as.Date('2021-01-01'), as.Date('2021-01-10'), by = 'day'), Value = 21:30))

# Desired data frame
my_df_goal <- as.data.frame(list(Ticker = c(rep("Ticker1", 10), rep("Ticker2", 10), rep("Ticker3", 10)),
date = rep(seq.Date(as.Date('2021-01-01'), as.Date('2021-01-10'), by = 'day'), 3),
Value = 1:30))

在 stackoverflow 上也有关于取消列表的类似问题,但我无法解决我的问题。

一种方法可能是

my_df <- as.data.frame(rlist::list.flatten(my_list))

# Same result:
my_df2 <- as.data.frame(unlist(my_list,recursive = F))

#Edit: just noticed that you do not need to unlist first to get the same result:
my_df3 <- as.data.frame(my_list)

然后尝试从新变量名中提取 Ticker。但我希望有更简单的解决方案。

我也试过my_df4 <- reshape2::melt(my_list) ,但这没有帮助。我有一种感觉 purrr包可能有这个功能,但我不熟悉包。

我很高兴能得到任何帮助!

非常感谢

最佳答案

dplyrbind_rows 应该可以解决问题:

library(dplyr)

bind_rows(my_list, .id = "Ticker")

返回

# A tibble: 30 x 3
Ticker date Value
<chr> <date> <int>
1 Ticker1 2021-01-01 1
2 Ticker1 2021-01-02 2
3 Ticker1 2021-01-03 3
4 Ticker1 2021-01-04 4
5 Ticker1 2021-01-05 5
6 Ticker1 2021-01-06 6
7 Ticker1 2021-01-07 7
8 Ticker1 2021-01-08 8
9 Ticker1 2021-01-09 9
10 Ticker1 2021-01-10 10
# ... with 20 more rows

关于r - 如何取消列表并将顶级名称保留为 R 中的新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71870968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com