В моей рабочей области у меня есть dfo
, который представляет собой список из 216 объектов. Каждый объект представляет собой кадр данных, первые два объекта показаны:lapply over list of Data Frames (R)
> head(dfo)
$`1997-01-23`
Date C/P K Vol Delta ID
56 1997-01-23 0 400 NA NA 11690674
10 1997-01-23 0 550 NA NA 10376194
34 1997-01-23 0 600 NA NA 11036690
58 1997-01-23 0 650 NA NA 11544898
27 1997-01-23 0 660 NA NA 10759732
52 1997-01-23 0 670 NA NA 11439157
50 1997-01-23 0 680 0.176301 0.995920 11364929
60 1997-01-23 0 690 0.185490 0.99
39 1997-01-23 0 700 0.203161 0.972175 11183860
65 1997-01-23 0 710 0.200024 0.955090 11730364
38 1997-01-23 0 720 0.202629 0.923953 10982863
. . . . . . .
. . . . . . .
. . . . . . .
45 1997-01-23 1 785 0.160904 -0.552771 10986679
2 1997-01-23 1 790 0.159603 -0.609276 10333499
23 1997-01-23 1 795 0.156346 -0.666208 10456682
47 1997-01-23 1 800 0.154266 -0.719749 11072475
44 1997-01-23 1 805 0.150034 -0.773075 11165557
63 1997-01-23 1 810 0.151855 -0.812170 11764824
53 1997-01-23 1 815 0.150437 -0.851131 11378977
62 1997-01-23 1 820 NA NA 11532248
18 1997-01-23 1 825 NA NA 10428721
41 1997-01-23 1 830 NA NA 10985583
$`1997-02-20`
Date C/P K Vol Delta ID
125 1997-02-20 0 400 NA NA 11116217
139 1997-02-20 0 450 NA NA 11285261
157 1997-02-20 0 475 NA NA 11697618
100 1997-02-20 0 500 NA NA 10744183
167 1997-02-20 0 525 NA NA 11659969
162 1997-02-20 0 550 NA NA 11774819
79 1997-02-20 0 575 NA NA 10237388
150 1997-02-20 0 600 NA NA 11441546
118 1997-02-20 0 610 NA NA 10875377
72 1997-02-20 0 620 NA NA 10249544
121 1997-02-20 0 625 NA NA 10924970
85 1997-02-20 0 630 NA NA 10387622
102 1997-02-20 0 635 NA NA 10599759
107 1997-02-20 0 640 NA NA 10770025
124 1997-02-20 0 645 NA NA 11068359
129 1997-02-20 0 650 NA NA 10883922
105 1997-02-20 0 660 NA NA 10485716
123 1997-02-20 0 670 NA NA 11020541
175 1997-02-20 0 675 0.244968 0.994066 10350962
98 1997-02-20 0 680 0.261206 0.989390 10574981
. . . . . . .
. . . . . . .
. . . . . . .
99 1997-02-20 1 830 0.182276 -0.719366 10719331
163 1997-02-20 1 840 0.178969 -0.797619 11657641
132 1997-02-20 1 850 0.178679 -0.858147 11205448
169 1997-02-20 1 875 NA NA 11759335
67 1997-02-20 1 900 NA NA 10001169
90 1997-02-20 1 925 NA NA 10196550
У меня также есть кадр данных index
из 216 строк и 2 колонки:
> head(index)
Date Index
1 01/23/1997 776.64
2 02/20/1997 800.35
3 03/20/1997 778.04
4 04/17/1997 760.49
5 05/22/1997 833.86
6 06/19/1997 888.99
Для каждого кадра данных в списке dfo
I хотите разделить вектор dfo$K
на соответствующее значение index$Index
для этой даты. 216 дат в списке кадров данных и 216 дат в фрейме данных index
прекрасно соответствуют, но я включил столбцы Date
как в dfo
, так и index
для резервирования.
Как бы реализовать в этом случае lapply
? Я действительно не понимаю, как связать список из 216 кадров данных с фреймом данных из 216 строк.
Возможно, вы захотите взглянуть на 'mapply'. – coffeinjunky
Учитывая, что ваш список data.frames, похоже, имеет одинаковые столбцы и уже имеет столбец «Date», который отличает данные, вы можете просто объединить их все в один большой data.frame с помощью 'do.call (rbind, dfo) ', если вам проще работать, поэтому вы можете использовать' merge' или 'dplyr' или whatnot. Если вы хотите изменить все как можно меньше, тем не менее, 'mapply' или' Map' - это путь. – alistaire
Если ваши таблицы в списке имеют одинаковую структуру, будет менее эффективно обрабатывать их с помощью обработки 'lapply' по сравнению с одной таблицей * по группе *. Для быстрого связывания вашего списка в единый набор данных смотрите функцию 'rbindlist'. – jangorecki