Как создать фрейм данных из вложенного списка? - PullRequest
1 голос
/ 02 августа 2020

Я новичок в R (и stackoverflow!), Поэтому будьте любезны, если это плохой вопрос / плохо описан.

Я пытаюсь заполнить фрейм данных из вложенного списка. В настоящее время у меня есть вложенный список информации о 50 петициях, которые я скопировал в Интернете. Я хочу создать фрейм данных, в котором есть количество подписей от каждого из 650 парламентских округов, чтобы каждый столбец представлял собой петицию, а каждая строка - округ.

Итак, на данный момент я могу назвать количество подписей для петиции (первая [[1]]) и избирательного округа (вторая [[1]]):

> json[[1]][["data"]][["attributes"]][["signatures_by_constituency"]][[1]][["signature_count"]] 

[1] 1144

Мне также удалось сделать фрейм данных из названий округов ...

for (i in 1:650){
constituencies[[i]] <- json[[1]][["data"]][["attributes"]][["signatures_by_constituency"]][[i]][["name"]]
}

constituencies <- data.frame(constituencies)

                                 constituencies
1                                     Aldershot
2                           Aldridge-Brownhills
3                      Altrincham and Sale West
4                                  Amber Valley
5                       Arundel and South Downs
6                                      Ashfield
7                                       Ashford
...
650                   Cardiff South and Penarth

Теперь мне нужно воспроизвести это, чтобы каждая петиция представляла собой новый столбец с количеством подписей для каждого округа.

Я пробовал:

 for (a in 1:50){
     signatures <- list()
     for (b in 1:650){
         signatures[[b]] <- json[[a]][["data"]][["attributes"]][["signatures_by_constituency"]][[b]][["signature_count"]]
     }
     cbind(constituencies, signatures)
 }

Но я только что получил :

Error in json[[a]][["data"]][["attributes"]][["signatures_by_constituency"]][[b]] : 
  subscript out of bounds

Может кто поможет? Спасибо :)

1 Ответ

0 голосов
/ 02 августа 2020

Мы можем инициализировать signatures вне for l oop

signatures <- vector('list', 50)
for(a in 1:50){
    for(b in 1:650) {
        signatures[[a]][[b]] <-  json[[a]][["data"]][["attributes"]][["signatures_by_constituency"]][[b]][["signature_count"]]
    }
  }

На небольшом воспроизводимом примере

signatures <- vector('list', 3)
for(a in 1:3){for(b in 1:2) {signatures[[a]][[b]] <- 1:5}}
...