Существует список списка, содержащий data.frames:
names(r01)
[1] "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20"
names(r01[[1]])
[1] "rst" "df"
names(r01[[1]][['rst']])
[1] "2017-05-08/0.50" "2017-05-08/1.00" "2017-05-08/1.50" "2017-05-08/2.00" "2017-05-08/2.50"
[6] "2017-05-08/3.00" "2017-06-09/2.00" "2017-06-09/2.50" "2017-06-09/3.00" "2017-07-10/0.50"
...
...
[91] "2019-01-14/1.00" "2019-01-14/1.50" "2019-01-14/3.00"
Каждый элемент этого последнего списка является data.frame. Это for
выполняет задачу:
r01p=data.frame()
for(dias in 1:2) #length(r01))
for(datas in 1:2){ #length(r01[[dias]][['rst']])){
r01t=cbind(periodo=names(r01)[dias],r01[[dias]][['rst']][[datas]])
r01p=rbind(r01p,r01t)
}
r01p[,1:10]
periodo dia dt_op rz dt_pregao rst rst1 pc_rst1 vl1 rst2
1 5 1 2017-05-08 0.5 2017-05-08 193.2 990 100.0 0.33 -816.0
2 5 2 2017-05-08 0.5 2017-05-09 -218.8 -150 -15.2 0.38 68.0
3 5 3 2017-05-08 0.5 2017-05-10 -2983.2 -1380 -139.4 0.79 435.2
4 5 4 2017-05-08 0.5 2017-05-11 -3419.2 -1620 -163.6 0.87 489.6
5 5 5 2017-05-08 0.5 2017-05-12 -7746.8 -3330 -336.4 1.44 952.0
6 5 6 2017-05-08 0.5 2017-05-15 NA NA NA NA 1264.8
7 5 1 2017-05-08 1.0 2017-05-08 222.8 990 100.0 0.33 -791.2
8 5 2 2017-05-08 1.0 2017-05-09 -334.8 -150 -15.2 0.38 55.2
9 5 3 2017-05-08 1.0 2017-05-10 -3183.2 -1380 -139.4 0.79 404.8
10 5 4 2017-05-08 1.0 2017-05-11 -3251.2 -1620 -163.6 0.87 496.8
11 5 5 2017-05-08 1.0 2017-05-12 -9486.0 -3330 -336.4 1.44 1012.0
12 5 6 2017-05-08 1.0 2017-05-15 NA NA NA NA 1306.4
13 6 1 2017-05-05 0.5 2017-05-05 214.8 990 100.0 0.45 -809.6
14 6 2 2017-05-05 0.5 2017-05-08 599.2 264 26.7 0.33 -52.8
15 6 3 2017-05-05 0.5 2017-05-09 354.0 154 15.6 0.38 0.0
16 6 4 2017-05-05 0.5 2017-05-10 -1618.4 -748 -75.6 0.79 334.4
17 6 5 2017-05-05 0.5 2017-05-11 -1694.4 -924 -93.3 0.87 422.4
18 6 6 2017-05-05 0.5 2017-05-12 -5719.6 -2178 -220.0 1.44 915.2
19 6 7 2017-05-05 0.5 2017-05-15 NA NA NA NA 1196.8
20 6 1 2017-05-05 1.0 2017-05-05 214.8 990 100.0 0.45 -809.6
21 6 2 2017-05-05 1.0 2017-05-08 599.2 264 26.7 0.33 -52.8
22 6 3 2017-05-05 1.0 2017-05-09 354.0 154 15.6 0.38 0.0
23 6 4 2017-05-05 1.0 2017-05-10 -1618.4 -748 -75.6 0.79 334.4
24 6 5 2017-05-05 1.0 2017-05-11 -1694.4 -924 -93.3 0.87 422.4
25 6 6 2017-05-05 1.0 2017-05-12 -5719.6 -2178 -220.0 1.44 915.2
26 6 7 2017-05-05 1.0 2017-05-15 NA NA NA NA 1196.8
Цель состоит в том, чтобы идентифицировать (r01
имя элемента) и rbind
data.frames в r01[[*all*]][['rst']]
.
Можно ли заменить это for
sapply
?
Воспроизводимый экстракт:
dput(r01)
list(`5` = list(rst = list(structure(list(dia = 1:6, dt_op = structure(c(17294,
17294, 17294, 17294, 17294, 17294), class = "Date"), rz = c(0.5,
0.5, 0.5, 0.5, 0.5, 0.5), dt_pregao = structure(c(17294, 17295,
17296, 17297, 17298, 17301), class = "Date"), rst = c(193.2,
-218.8, -2983.2, -3419.2, -7746.8, NA), rst1 = c(990, -150, -1380,
-1620, -3330, NA), pc_rst1 = c(100, -15.2, -139.4, -163.6, -336.4,
NA), vl1 = c(0.33, 0.38, 0.79, 0.87, 1.44, NA), rst2 = c(-816,
68.0000000000001, 435.2, 489.6, 952, 1264.8), pc_rst2 = c(-100,
8.3, 53.3, 60, 116.7, 155)), class = "data.frame", row.names = c(NA,
-6L)), structure(list(dia = 1:6, dt_op = structure(c(17294, 17294,
17294, 17294, 17294, 17294), class = "Date"), rz = c(1, 1, 1,
1, 1, 1), dt_pregao = structure(c(17294, 17295, 17296, 17297,
17298, 17301), class = "Date"), rst = c(222.8, -334.8, -3183.2,
-3251.2, -9486, NA), rst1 = c(990, -150, -1380, -1620, -3330,
NA), pc_rst1 = c(100, -15.2, -139.4, -163.6, -336.4, NA), vl1 = c(0.33,
0.38, 0.79, 0.87, 1.44, NA), rst2 = c(-791.2, 55.2, 404.8, 496.8,
1012, 1306.4), pc_rst2 = c(-100, 7, 51.2, 62.8, 127.9, 165.1)), class = "data.frame", row.names = c(NA,
-6L))), df = list(structure(list(dt_op = structure(c(17294, 17294,
17294, 17294), class = "Date"), rz = c(0.5, 0.5, 0.5, 0.5), cd_papel = c("PETRE34",
"PETRF44", "PETRE44", "PETRQ15"), strike = c(14, 14.5, 14.5,
15), qt = c(3000, 1360, 5680, 800), c_v = c(-1, 1, -1, 1), preco = c(0.33,
0.6, 0.14, 0.97), at_ini = c(14.08, 14.08, 14.08, 14.08)), class = "data.frame", row.names = c("9",
"12", "11", "121")), structure(list(dt_op = structure(c(17294,
17294, 17294, 17294), class = "Date"), rz = c(1, 1, 1, 1), cd_papel = c("PETRE34",
"PETRF15", "PETRE15", "PETRQ15"), strike = c(14, 15, 15, 15),
qt = c(3000, 1840, 16000, 800), c_v = c(-1, 1, -1, 1), preco = c(0.33,
0.43, 0.05, 0.97), at_ini = c(14.08, 14.08, 14.08, 14.08)), class = "data.frame", row.names = c(9L,
14L, 13L, 12L)))), `6` = list(rst = list(structure(list(dia = 1:7,
dt_op = structure(c(17291, 17291, 17291, 17291, 17291, 17291,
17291), class = "Date"), rz = c(0.5, 0.5, 0.5, 0.5, 0.5,
0.5, 0.5), dt_pregao = structure(c(17291, 17294, 17295, 17296,
17297, 17298, 17301), class = "Date"), rst = c(214.8, 599.2,
354, -1618.4, -1694.4, -5719.6, NA), rst1 = c(990, 264, 154,
-748, -924, -2178, NA), pc_rst1 = c(100, 26.7, 15.6, -75.6,
-93.3, -220, NA), vl1 = c(0.45, 0.33, 0.38, 0.79, 0.87, 1.44,
NA), rst2 = c(-809.6, -52.8, 0, 334.4, 422.4, 915.2, 1196.8
), pc_rst2 = c(-100, -6.5, 0, 41.3, 52.2, 113, 147.8)), class = "data.frame", row.names = c(NA,
-7L)), structure(list(dia = 1:7, dt_op = structure(c(17291, 17291,
17291, 17291, 17291, 17291, 17291), class = "Date"), rz = c(1,
1, 1, 1, 1, 1, 1), dt_pregao = structure(c(17291, 17294, 17295,
17296, 17297, 17298, 17301), class = "Date"), rst = c(214.8,
599.2, 354, -1618.4, -1694.4, -5719.6, NA), rst1 = c(990, 264,
154, -748, -924, -2178, NA), pc_rst1 = c(100, 26.7, 15.6, -75.6,
-93.3, -220, NA), vl1 = c(0.45, 0.33, 0.38, 0.79, 0.87, 1.44,
NA), rst2 = c(-809.6, -52.8, 0, 334.4, 422.4, 915.2, 1196.8),
pc_rst2 = c(-100, -6.5, 0, 41.3, 52.2, 113, 147.8)), class = "data.frame", row.names = c(NA,
-7L))), df = list(structure(list(dt_op = structure(c(17291, 17291,
17291, 17291), class = "Date"), rz = c(0.5, 0.5, 0.5, 0.5), cd_papel = c("PETRE34",
"PETRF15", "PETRE15", "PETRQ15"), strike = c(14, 15, 15, 15),
qt = c(2200, 1760, 10000, 880), c_v = c(-1, 1, -1, 1), preco = c(0.45,
0.46, 0.08, 0.87), at_ini = c(14.21, 14.21, 14.21, 14.21)), class = "data.frame", row.names = c("11",
"13", "15", "111")), structure(list(dt_op = structure(c(17291,
17291, 17291, 17291), class = "Date"), rz = c(1, 1, 1, 1), cd_papel = c("PETRE34",
"PETRF15", "PETRE15", "PETRQ15"), strike = c(14, 15, 15, 15),
qt = c(2200, 1760, 10000, 880), c_v = c(-1, 1, -1, 1), preco = c(0.45,
0.46, 0.08, 0.87), at_ini = c(14.21, 14.21, 14.21, 14.21)), class = "data.frame", row.names = c("11",
"13", "15", "111")))))