[英]Handling a list of lists of dataframes
Losses
[[1]]
[[1]]$`1`
YearID Category Loss
1 2 US HU 826.79527
2 4 US HU 357.37926
3 5 US HU 148.71542
4 5 US HU 654.44473
5 8 US HU 81.74428
6 8 US HU 60.27192
7 8 US HU 63.59582
8 10 US HU 778.97650
9 10 US HU 1498.90801
10 11 US HU 66.72708
11 11 US HU 123.25430
12 11 US HU 70.87750
13 11 US HU 272.57985
14 12 US HU 77.14205
15 13 US HU 305.00484
16 16 US HU 577.17381
17 16 US HU 137.12441
18 20 US HU 53.29270
19 20 US HU 123.86174
[[1]]$`2`
YearID Category Loss
1 2 US EQ 2.6895238
2 9 US EQ 42.7690970
3 9 US EQ 10.7816904
4 11 US EQ 2.3136544
5 12 US EQ 0.4897316
6 13 US EQ 1.0560520
7 15 US EQ 111.0338641
8 17 US EQ 123.7145577
9 19 US EQ 8.1518931
10 19 US EQ 0.3099158
[[1]]$`3`
YearID Category Loss
1 2 JP EQ 0.2920082
2 5 JP EQ 64.6424343
3 7 JP EQ 0.6097201
4 7 JP EQ 6.7342614
5 10 JP EQ 2.9948139
6 10 JP EQ 12.8309552
7 15 JP EQ 0.2373154
8 16 JP EQ 1.6869774
9 20 JP EQ 1.3283421
[[2]]
[[2]]$`1`
YearID Category Loss
1 15 US HU 107.63285
2 16 US HU 192.89825
3 19 US HU 215.81496
4 2 US HU 826.79527
5 4 US HU 357.37926
6 5 US HU 148.71542
7 5 US HU 654.44473
8 8 US HU 81.74428
9 8 US HU 60.27192
10 8 US HU 63.59582
11 10 US HU 778.97650
12 10 US HU 1498.90801
13 11 US HU 66.72708
14 11 US HU 123.25430
15 11 US HU 70.87750
16 11 US HU 272.57985
17 12 US HU 77.14205
18 13 US HU 305.00484
19 16 US HU 577.17381
20 16 US HU 137.12441
21 20 US HU 53.29270
22 20 US HU 123.86174
[[2]]$`2`
YearID Category Loss
1 5 US EQ 0.6082396
2 10 US EQ 159.8625057
3 2 US EQ 2.6895238
4 9 US EQ 42.7690970
5 9 US EQ 10.7816904
6 11 US EQ 2.3136544
7 12 US EQ 0.4897316
8 13 US EQ 1.0560520
9 15 US EQ 111.0338641
10 17 US EQ 123.7145577
11 19 US EQ 8.1518931
12 19 US EQ 0.3099158
[[2]]$`3`
YearID Category Loss
1 7 JP EQ 0.3618008
2 12 JP EQ 11.0977981
3 2 JP EQ 0.2920082
4 5 JP EQ 64.6424343
5 7 JP EQ 0.6097201
6 7 JP EQ 6.7342614
7 10 JP EQ 2.9948139
8 10 JP EQ 12.8309552
9 15 JP EQ 0.2373154
10 16 JP EQ 1.6869774
11 20 JP EQ 1.3283421
[[3]]
[[3]]$`1`
YearID Category Loss
1 4 US HU 72.52669
2 8 US HU 270.71636
3 10 US HU 132.25629
4 10 US HU 49.67546
5 11 US HU 134.83450
6 12 US HU 116.10639
7 18 US HU 409.75564
8 19 US HU 268.86671
9 20 US HU 576.44159
10 15 US HU 107.63285
11 16 US HU 192.89825
12 19 US HU 215.81496
13 2 US HU 826.79527
14 4 US HU 357.37926
15 5 US HU 148.71542
16 5 US HU 654.44473
17 8 US HU 81.74428
18 8 US HU 60.27192
19 8 US HU 63.59582
20 10 US HU 778.97650
21 10 US HU 1498.90801
22 11 US HU 66.72708
23 11 US HU 123.25430
24 11 US HU 70.87750
25 11 US HU 272.57985
26 12 US HU 77.14205
27 13 US HU 305.00484
28 16 US HU 577.17381
29 16 US HU 137.12441
30 20 US HU 53.29270
31 20 US HU 123.86174
[[3]]$`2`
YearID Category Loss
1 6 US EQ 3.6683023
2 10 US EQ 4.6943200
3 11 US EQ 2.6239743
4 13 US EQ 1.3989827
5 13 US EQ 0.2399834
6 19 US EQ 5.8900987
7 5 US EQ 0.6082396
8 10 US EQ 159.8625057
9 2 US EQ 2.6895238
10 9 US EQ 42.7690970
11 9 US EQ 10.7816904
12 11 US EQ 2.3136544
13 12 US EQ 0.4897316
14 13 US EQ 1.0560520
15 15 US EQ 111.0338641
16 17 US EQ 123.7145577
17 19 US EQ 8.1518931
18 19 US EQ 0.3099158
[[3]]$`3`
YearID Category Loss
1 1 JP EQ 0.9199341
2 2 JP EQ 2.7294618
3 7 JP EQ 224.4266519
4 11 JP EQ 0.3948219
5 14 JP EQ 0.7592534
6 15 JP EQ 1.2838320
7 7 JP EQ 0.3618008
8 12 JP EQ 11.0977981
9 2 JP EQ 0.2920082
10 5 JP EQ 64.6424343
11 7 JP EQ 0.6097201
12 7 JP EQ 6.7342614
13 10 JP EQ 2.9948139
14 10 JP EQ 12.8309552
15 15 JP EQ 0.2373154
16 16 JP EQ 1.6869774
17 20 JP EQ 1.3283421
-
list(structure(list(`1` = structure(list(YearID = c(2, 4, 5,
5, 8, 8, 8, 10, 10, 11, 11, 11, 11, 12, 13, 16, 16, 20, 20),
Category = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), class = "factor", .Label = "US HU"),
Loss = c(826.795273886473, 357.379257145211, 148.715422723442,
654.444727907641, 81.7442792092622, 60.2719188870034, 63.5958204662617,
778.976495232166, 1498.90801288032, 66.7270779301846, 123.254304652346,
70.8774963289464, 272.579854338023, 77.1420493089197, 305.004836528708,
577.173809957773, 137.124412010961, 53.2926961871035, 123.861739643341
)), .Names = c("YearID", "Category", "Loss"), row.names = c(NA,
-19L), class = "data.frame"), `2` = structure(list(YearID = c(2,
9, 9, 11, 12, 13, 15, 17, 19, 19), Category = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), class = "factor", .Label = "US EQ"),
Loss = c(2.68952379748490, 42.7690970302631, 10.7816904147645,
2.31365444951509, 0.489731609222403, 1.05605200325909, 111.033864050878,
123.714557672790, 8.15189312989583, 0.309915764784634)), .Names = c("YearID",
"Category", "Loss"), row.names = c(NA, -10L), class = "data.frame"),
`3` = structure(list(YearID = c(2, 5, 7, 7, 10, 10, 15, 16,
20), Category = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), class = "factor", .Label = "JP EQ"), Loss = c(0.292008160090971,
64.6424342762608, 0.609720084708476, 6.73426138743874, 2.99481387294425,
12.8309551549701, 0.237315428236897, 1.68697744368254, 1.32834211322205
)), .Names = c("YearID", "Category", "Loss"), row.names = c(NA,
-9L), class = "data.frame")), .Names = c("1", "2", "3")),
structure(list(`1` = structure(list(YearID = c(15, 16, 19,
2, 4, 5, 5, 8, 8, 8, 10, 10, 11, 11, 11, 11, 12, 13, 16,
16, 20, 20), Category = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), .Label = "US HU", class = "factor"), Loss = c(107.632845241511,
192.898254968436, 215.814957575895, 826.795273886473, 357.379257145211,
148.715422723442, 654.444727907641, 81.7442792092622, 60.2719188870034,
63.5958204662617, 778.976495232166, 1498.90801288032, 66.7270779301846,
123.254304652346, 70.8774963289464, 272.579854338023, 77.1420493089197,
305.004836528708, 577.173809957773, 137.124412010961, 53.2926961871035,
123.861739643341)), .Names = c("YearID", "Category", "Loss"
), row.names = c(NA, 22L), class = "data.frame"), `2` = structure(list(
YearID = c(5, 10, 2, 9, 9, 11, 12, 13, 15, 17, 19, 19
), Category = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = "US EQ", class = "factor"),
Loss = c(0.60823959378077, 159.862505662270, 2.68952379748490,
42.7690970302631, 10.7816904147645, 2.31365444951509,
0.489731609222403, 1.05605200325909, 111.033864050878,
123.714557672790, 8.15189312989583, 0.309915764784634
)), .Names = c("YearID", "Category", "Loss"), row.names = c(NA,
12L), class = "data.frame"), `3` = structure(list(YearID = c(7,
12, 2, 5, 7, 7, 10, 10, 15, 16, 20), Category = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "JP EQ", class = "factor"),
Loss = c(0.36180083325003, 11.0977980698104, 0.292008160090971,
64.6424342762608, 0.609720084708476, 6.73426138743874,
2.99481387294425, 12.8309551549701, 0.237315428236897,
1.68697744368254, 1.32834211322205)), .Names = c("YearID",
"Category", "Loss"), row.names = c(NA, 11L), class = "data.frame")), .Names = c("1",
"2", "3")), structure(list(`1` = structure(list(YearID = c(4,
8, 10, 10, 11, 12, 18, 19, 20, 15, 16, 19, 2, 4, 5, 5, 8,
8, 8, 10, 10, 11, 11, 11, 11, 12, 13, 16, 16, 20, 20), Category = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), .Label = "US HU", class = "factor"), Loss = c(72.5266949028921,
270.716360695826, 132.256285323478, 49.6754599765934, 134.834496124065,
116.106394912601, 409.755636985602, 268.866707090942, 576.441585784339,
107.632845241511, 192.898254968436, 215.814957575895, 826.795273886473,
357.379257145211, 148.715422723442, 654.444727907641, 81.7442792092622,
60.2719188870034, 63.5958204662617, 778.976495232166, 1498.90801288032,
66.7270779301846, 123.254304652346, 70.8774963289464, 272.579854338023,
77.1420493089197, 305.004836528708, 577.173809957773, 137.124412010961,
53.2926961871035, 123.861739643341)), .Names = c("YearID",
"Category", "Loss"), row.names = c(NA, 31L), class = "data.frame"),
`2` = structure(list(YearID = c(6, 10, 11, 13, 13, 19,
5, 10, 2, 9, 9, 11, 12, 13, 15, 17, 19, 19), Category = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "US EQ", class = "factor"), Loss = c(3.66830233362805,
4.69432002882382, 2.62397430771946, 1.39898268940725,
0.239983432670597, 5.89009873171407, 0.60823959378077,
159.862505662270, 2.68952379748490, 42.7690970302631,
10.7816904147645, 2.31365444951509, 0.489731609222403,
1.05605200325909, 111.033864050878, 123.714557672790,
8.15189312989583, 0.309915764784634)), .Names = c("YearID",
"Category", "Loss"), row.names = c(NA, 18L), class = "data.frame"),
`3` = structure(list(YearID = c(1, 2, 7, 11, 14, 15,
7, 12, 2, 5, 7, 7, 10, 10, 15, 16, 20), Category = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), .Label = "JP EQ", class = "factor"), Loss = c(0.91993405093065,
2.72946175093358, 224.426651937984, 0.394821850501270,
0.75925338029943, 1.28383204511935, 0.36180083325003,
11.0977980698104, 0.292008160090971, 64.6424342762608,
0.609720084708476, 6.73426138743874, 2.99481387294425,
12.8309551549701, 0.237315428236897, 1.68697744368254,
1.32834211322205)), .Names = c("YearID", "Category",
"Loss"), row.names = c(NA, 17L), class = "data.frame")), .Names = c("1",
"2", "3")))
-
InputList = list(c(1.5, 1.2), c(0.9, 0.8), c(1, 1))
InputList
的長度始終與Losses
長度相同。 即會有相同的沒有。 InputList
的向量作為Losses
長度。
我必須首先根據向量的第一個元素按遞增順序排列InputList
,即
InputList = list(c(0.9, 0.8), c(1, 1),c(1.5, 1.2))
現在,我必須將InputList
的第一個向量的第二個元素相乘,即這里它與第一個損失列表中的所有數據幀的損失InputList
0.8,即損失[[1]]
並且類似地將1與損失[[2]]中所有數據幀的損失列相乘1
並且我希望將結果作為類似於原始列表的列表丟失,只是每個數據框的損失列相應地膨脹或收縮。
Q1:“我必須首先根據向量的第一個元素按順序排列InputList,即
newInput <- InputList[order(sapply(InputList, "[[", 1))]
newInput
[[1]]
[1] 0.9 0.8
[[2]]
[1] 1 1
[[3]]
[1] 1.5 1.2
Q2:“現在,我必須將InputList的第一個向量的第二個元素相乘,即這里它與第一個損失列表中的所有數據幀的損失列相加,即損失[[1]],並且類似地乘以1損失[[2]]中所有數據幀的損失列
(我假設這意味着損失[[1]]中的所有三個數據幀都需要將其損失列乘以0.9。)
這將返回一個3 x 3的數據幀矩陣,其損耗列乘以所需的因子:
ddapply <- function(dfrmlist,fac){
lapply(dfrmlist,
function(dfrm){ dfrm[, "Loss"] <- dfrm[ ,"Loss"]*fac; return(dfrm)})}
mapply( ddapply, Losses, sapply(newInput, "[[", 2) )
由於R矩陣中元素的列主要排序,第一組數據幀值位於第一列,而不是第一行。 所以這是損失的第一個元素中的第二個data.frame:
> mapply( ddapply, Losses, sapply(newInput, "[[", 2) )[2,1]
$`2`
YearID Category Loss
1 2 US EQ 2.1516190
2 9 US EQ 34.2152776
3 9 US EQ 8.6253523
4 11 US EQ 1.8509236
5 12 US EQ 0.3917853
6 13 US EQ 0.8448416
7 15 US EQ 88.8270912
8 17 US EQ 98.9716461
9 19 US EQ 6.5215145
10 19 US EQ 0.2479326
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.