【问题标题】:Create list of unique URLs using R Studio使用 R Studio 创建唯一 URL 列表
【发布时间】:2021-11-27 18:31:58
【问题描述】:

我是 R Studio 的新手,咬得比我能嚼的还多 :)

我正在尝试使用 R Studio 创建一个 URL 列表。所有 URL 都遵循相同的逻辑,仅因位置搜索字符串、年份和月份而异。下面是几个例子:

https://sunrise-sunset.org/search?location=mar%20del%20plata&year=2021&month=10#calendar

https://sunrise-sunset.org/search?location=bendigo%20victoria&year=1969&month=7#calendar

https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=2025&month=2#calendar

我尝试过使用paste0()c()

URLs <- paste0("https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=",c(1969:2031),"&month=",c(1:12),"#calendar")

但是,通过使用两个单独的 c() 实例来表示年和月,生成的序列彼此独立,我最终得到了 60 个不同的 URL,而不是 750 个。有没有办法生成一个序列几个月,1:12,对于一系列年份中的每一年,1969:2031,使用paste0()这甚至是我想要完成的最佳方法吗?如果是这样,是否还有一种方法可以为多个位置生成这一系列年份和月份?

【问题讨论】:

    标签: r list series


    【解决方案1】:

    一个选项使用expand.grid 创建数据框和apply 将所有行折叠成一个字符串。

    base_url <- 'https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&'
    
    year_url <- paste0("year=",c(1969:2031))
    
    mon_url <- paste0("&month=",c(1:12),"#calendar")
    
    out_url <- apply(expand.grid(base_url, year_url, mon_url), 1, paste, collapse = '')
    
    length(out_url)
    #> [1] 756
    
    head(out_url)
    #> [1] "https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=1969&month=1#calendar"
    #> [2] "https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=1970&month=1#calendar"
    #> [3] "https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=1971&month=1#calendar"
    #> [4] "https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=1972&month=1#calendar"
    #> [5] "https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=1973&month=1#calendar"
    #> [6] "https://sunrise-sunset.org/search?location=parkville%20missouri%20usa&year=1974&month=1#calendar"
    

    reprex package (v2.0.0) 于 2021-10-07 创建


    或者使用 rep 的不同选项在最长向量 (year_url) 中重复较短向量(base_urlmon_url)相同的次数

    paste0(rep(base_url, each = length(year_url)), 
           year_url, 
           rep(mon_url, each = length(year_url)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      相关资源
      最近更新 更多