【问题标题】:Loops and Vector for generating URLs; digits in loop用于生成 URL 的循环和向量;循环中的数字
【发布时间】:2023-03-06 15:48:01
【问题描述】:

我想生成一个对应于一年中每一天的 URL 向量,但似乎无法弄清楚两件事:i) 我想生成一个包含所有日期的 url 向量,但不断得到为每个月生成一个向量的矩阵(向量长度为​​ 372 而不是 12 列,每列 31);和 ii) 我想让单个数字与 0 连接,这样我得到的不是 1,2,3,而是 01,02,03。代码如下,非常感谢所有回复。

n <- 12
q <- 31
url_vec <- matrix(NA, ncol = 1, nrow = q)
full_url_vec <- as.data.frame(rep(NA, q)) 

for(j in 1:n){

            url_year <- paste("http://www.parliament.go.ug/hansard/hans_view_date.jsp?dateYYYY=2009&dateMM=", j, "&dateDD=", sep = "")                      
        for(i in 1:q){
        url <-  paste(url_year, "&dateDD=", i, sep = "")
        url_vec[i,] <- url          
    }

full_url_vec[,j] <- url_vec

}

dim(full_url_vec)
full_url_vec

【问题讨论】:

    标签: r loops matrix


    【解决方案1】:

    这是一种方法:将sprintfpaste 结合使用。这里的关键是确保您的月份向量 (j) 适当地循环,为此,我使用了 rep

    j <- rep(sprintf("%02d", 1:12), each = 31)
    i <- sprintf("%02d", 1:31)
    url_year <- paste("http://some/siteMM=", j, "&dateDD=", i, sep = "")
    length(url_year)
    # [1] 372
    head(url_year)
    # [1] "http://some/siteMM=01&dateDD=01" "http://some/siteMM=01&dateDD=02"
    # [3] "http://some/siteMM=01&dateDD=03" "http://some/siteMM=01&dateDD=04"
    # [5] "http://some/siteMM=01&dateDD=05" "http://some/siteMM=01&dateDD=06"
    tail(url_year)
    # [1] "http://some/siteMM=12&dateDD=26" "http://some/siteMM=12&dateDD=27"
    # [3] "http://some/siteMM=12&dateDD=28" "http://some/siteMM=12&dateDD=29"
    # [5] "http://some/siteMM=12&dateDD=30" "http://some/siteMM=12&dateDD=31"
    

    【讨论】:

    • 非常感谢您的帮助 - 这太棒了,而且效率更高。
    【解决方案2】:

    你甚至不需要循环。 paste 是矢量化的
    另外,paste0 为您省去了使用 sep="" 的步骤

    i <- 1:31
    
    urlBase  <- "http://yourwebiste.com/?dfdfsdfdfd."
    urlSuffix <- "apikey=d323j43k43"
    
    paste0(urlBase, i, urlSuffix)
    

    至于与0 的连接,这里有一个函数,fw0() 在 github 上可以做到这一点: 链接:https://github.com/rsaporta/pubR/blob/gitbranch/fw0.R

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      相关资源
      最近更新 更多