我是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
有人可以帮忙吗?谢谢:)
答案 0 :(得分:0)
我们可以在signatures
循环之外初始化for
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}}