用于生成URL的循环和向量;循环中的数字

时间:2013-03-12 18:16:06

标签: r loops matrix

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

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

2 个答案:

答案 0 :(得分:0)

你甚至不需要循环。 paste已向量化 此外,paste0可为您节省使用sep=""

的步骤
i <- 1:31

urlBase  <- "http://yourwebiste.com/?dfdfsdfdfd."
urlSuffix <- "apikey=d323j43k43"

paste0(urlBase, i, urlSuffix)

就与0的连接而言,这是github上的一个函数fw0(),它可以做到: 链接:https://github.com/rsaporta/pubR/blob/gitbranch/fw0.R

答案 1 :(得分:0)

以下是一种方法:将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"