【发布时间】:2019-02-21 22:55:27
【问题描述】:
我尝试使用循环来创建一个组合列表,但我没有得到所有的迭代,而且它生成的数字比我预期的要小。 我正在使用的代码:
base = "http://sigtap.datasus.gov.br/r"
codes = list(304020060, 304050083, 304010308, 304070017, 304010081, 304020184, 304050040, 304040045, 304010308, 304030074, 304020338, 304020079, 304040134, 304010081) #14 different codes
month = c("01", "02", "03", "04","05","06","07","08", "09", "10", "11","12")
year = c(2015:2018)
for (i in base) {
for(j in codes){
for (k in month) {
for (l in year) {
html <- paste(i, j, k, l, sep = "/" )
}}}}
我希望获得一条代码、月份和年份记录(大约 670 条不同的记录),但我只获得了 14 条:
[1] "http://sigtap.datasus.gov.br/app/sec/304020060/12/2015"
[2] "http://sigtap.datasus.gov.br/app/sec/304050083/12/2016"
[3] "http://sigtap.datasus.gov.br/app/sec/304010308/12/2017"
[4] "http://sigtap.datasus.gov.br/app/sec/304070017/12/2018"
[5] "http://sigtap.datasus.gov.br/app/sec/304010081/12/2015"
[6] "http://sigtap.datasus.gov.br/app/sec/304020184/12/2016"
[7] "http://sigtap.datasus.gov.br/app/sec/304050040/12/2017"
[8] "http://sigtap.datasus.gov.br/app/sec/304040045/12/2018"
[9] "http://sigtap.datasus.gov.br/app/sec/304010308/12/2015"
[10] "http://sigtap.datasus.gov.br/app/sec/304030074/12/2016"
[11] "http://sigtap.datasus.gov.br/app/sec/304020338/12/2017"
[12] "http://sigtap.datasus.gov.br/app/sec/304020079/12/2018"
[13] "http://sigtap.datasus.gov.br/app/sec/304040134/12/2015"
[14] "http://sigtap.datasus.gov.br/app/sec/304010081/12/2016"
任何帮助都会很棒!
谢谢!
【问题讨论】:
-
您能否让您的问题可重现(它几乎可以重现,但缺少
codes)。还可以考虑创建一个 minimal 示例。我确信没有必要发布 14 个不同的代码、12 个月……来了解全局。 -
您的输出中只有一个月 -
"12"。你确定你的month向量是你认为的那样吗?此外,在不使用多个for循环的情况下,查看?expand.grid之类的内容可能会很方便。 -
试试
apply(expand.grid(base, codes, month, year), 1, paste, collapse = "/") -
我可能弄错了,但你是如何获得多个值的?你不是每次迭代都覆盖html,而不是添加它吗?
-
Markus,我正在尝试使用此循环从该网站收集数据。这些代码是多年来我需要更仔细地查看的“疾病”代码
标签: r loops combinations