如何基于 R 中的数据框创建列表列表?

问题描述 投票:0回答:1

美好的一天!我有这个数据框作为例子:

year<-rep(2000:2002,times=3)
month<-rep(1:3,times=1,each=3)
x<-c(5,10,15,20,25,30,35,40,45)

df<-cbind(year,month,x)

如下图所示,我想按月创建一个列表,然后在该列表中创建按年的列表。我也希望 x 以一定的长度重复。我可以谦虚地问一下如何在 R 上重新创建这个吗?

enter image description here

非常感谢!

我尝试使用地图和 lapply 功能,但它们不起作用。

r list functional-programming purrr
1个回答
0
投票

你在找这个吗?

> (l <- list(month1=lapply(1:3 |> setNames(paste0('year', 1:3)), \(x) rep_len(5*x, 4)),
+           month2=lapply(4:6 |> setNames(paste0('year', 4:6)), \(x) rep_len(5*x, 4)),
+           month3=lapply(7:9 |> setNames(paste0('year', 7:9)), \(x) rep_len(5*x, 4))
+ ))
$month1
$month1$year1
[1] 5 5 5 5

$month1$year2
[1] 10 10 10 10

$month1$year3
[1] 15 15 15 15


$month2
$month2$year4
[1] 20 20 20 20

$month2$year5
[1] 25 25 25 25

$month2$year6
[1] 30 30 30 30


$month3
$month3$year7
[1] 35 35 35 35

$month3$year8
[1] 40 40 40 40

$month3$year9
[1] 45 45 45 45

> str(l)
List of 3
 $ month1:List of 3
  ..$ year1: num [1:4] 5 5 5 5
  ..$ year2: num [1:4] 10 10 10 10
  ..$ year3: num [1:4] 15 15 15 15
 $ month2:List of 3
  ..$ year4: num [1:4] 20 20 20 20
  ..$ year5: num [1:4] 25 25 25 25
  ..$ year6: num [1:4] 30 30 30 30
 $ month3:List of 3
  ..$ year7: num [1:4] 35 35 35 35
  ..$ year8: num [1:4] 40 40 40 40
  ..$ year9: num [1:4] 45 45 45 45
© www.soinside.com 2019 - 2024. All rights reserved.