简体   繁体   中英

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))

The length of InputList will always be same as length of the Losses . ie there will be same no. of vectors in the InputList as length of the Losses .

I have to first arrange the InputList in increasing order according to the first elements of the vectors ie

InputList = list(c(0.9, 0.8), c(1, 1),c(1.5, 1.2))

Now, I have to multiply the second element of first vector of InputList ie here it is 0.8 with the loss column of all the data frames in the first list of Losses ie Losses[[1]]

and similarly multiply 1 with the Loss column of all data frames in Losses[[2]]

and I would like to have the result as a list similar to original list Losses just with the loss column of each data frame inflated or deflated accordingly.

Q1: "I have to first arrange the InputList in increasing order according to the first elements of the vectors ie

 newInput <- InputList[order(sapply(InputList, "[[", 1))]
 newInput
[[1]]
[1] 0.9 0.8

[[2]]
[1] 1 1

[[3]]
[1] 1.5 1.2

Q2: " Now, I have to multiply the second element of first vector of InputList ie here it is 0.8 with the loss column of all the data frames in the first list of Losses ie Losses[[1]], and similarly multiply 1 with the Loss column of all data frames in Losses[[2]]"

(I assume this means that all three dataframes in Losses[[1]] need to have their Loss columns multiplied by 0.9.)

This returns a 3 x 3 matrix of dataframes with their Loss column multiplied by the desired factor:

ddapply <- function(dfrmlist,fac){ 
         lapply(dfrmlist, 
             function(dfrm){ dfrm[, "Loss"] <- dfrm[ ,"Loss"]*fac; return(dfrm)})}
mapply( ddapply,  Losses, sapply(newInput, "[[", 2) )

The first set of dataframe values are in the first column, rather than the first row because of the column major ordering of elements in R matrices. So this is the second data.frame in the first element of Losses:

> 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM