美好的一天!我有这个数据框作为例子:
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 上重新创建这个吗?
非常感谢!
我尝试使用地图和 lapply 功能,但它们不起作用。
你在找这个吗?
> (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