r - 多重循环创建组合列表
问题描述
我尝试使用循环来创建组合列表,但我没有得到所有的迭代,它产生的数字比我预期的要小。我正在使用的代码:
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"
任何帮助都会很棒!
谢谢!
解决方案
您可以使用do.call
out <- do.call(paste, c(base, expand.grid(codes, month, year), sep = "/"))
head(out)
#[1] "http://sigtap.datasus.gov.br/r/304020060/01/2015"
#[2] "http://sigtap.datasus.gov.br/r/304050083/01/2015"
#[3] "http://sigtap.datasus.gov.br/r/304010308/01/2015"
#[4] "http://sigtap.datasus.gov.br/r/304070017/01/2015"
#[5] "http://sigtap.datasus.gov.br/r/304010081/01/2015"
#[6] "http://sigtap.datasus.gov.br/r/304020184/01/2015"
检查元素的数量
length(out)
#[1] 672
由于base
是常数,因此无需将其放入expand.grid
推荐阅读
- python - 当用户加入语音频道时 bot 加入,当用户离开时 bot 离开
- python - plotly-dash 在 Jupyterlab 中不起作用,并且 plotly 扩展也不起作用
- python - 通过将整数除以范围(1,100)中的所有整数并检查结果是否产生整数来评估整数的素数时出错
- javascript - 如果整个表达式为真,javascript输出非布尔值的行为是什么
- perl - 如何从 stat() 模块转换为适当的时间
- python - Pandas str 拆分一列并将其添加到数据框中
- html - 图片不显示 img src
- json - Post Request 在 Postman 中给出 405 错误
- python - /blog/post/comment/update/18/ 处的 ModuleNotFoundError 没有名为“test-post-ecomon”的模块
- pine-script - 保持条形颜色相同,直到 pinescript 中出现另一种情况