在R中的字符串中间打印日期

时间:2015-01-22 00:04:02

标签: r string

我尝试使用此资源:How to print R variables in middle of String

我仍然无法达到我想要的目标。

我正在寻找创建一个每周运行一次的网络刮刀,它会刮掉七个网页,每个网页都有一个日期。一个示例网站(不是这个帖子的真实网站)将是:“http://www.stevel.com/log/?xid=2275644&dd=2014-12-20”。因此,我有七个日期,我想创建七个字符串,在字符串末尾插入日期。

#create dates needed
dates <- seq.Date(as.Date(Sys.Date() - 6) , Sys.Date(), by='days')

dates
[1] "2015-01-15" "2015-01-16" "2015-01-17" "2015-01-18" "2015-01-19" "2015-01-20"
[7] "2015-01-21"

在创建循环之前我的微弱尝试试图只产生一个观察结果:

cat(sprintf("http://www.stevel.com/log/?xid=2275644&dd="\"%s"\, dates[1]))

期望的最终输出将是:

[1] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-15"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-16"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-17"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-18"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-19"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-20"
[7] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-21"

我在R中明确地将日期插入字符串中的问题。任何有助于指出我正确方向的人都将不胜感激

2 个答案:

答案 0 :(得分:5)

试试这个:

paste0("http://www.stevel.com/log/?xid=2275644&dd=", Sys.Date() - 6:0)

给出这个角色矢量:

[1] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-15"
[2] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-16"
[3] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-17"
[4] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-18"
[5] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-19"
[6] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-20"
[7] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-21"

如果你想在R控制台的7个连续行上cat而不是输出一个字符向量,那么如果v是上面的字符向量,那么以下任何一行都可以:

for(e in v) cat(e, "\n", sep = "")

cat(paste(paste0(v, "\n"), collapse = ""))

cat(paste(v, collapse = "\n"), "\n", sep = "")

或者如果在某些行的末尾有一个额外的空格不是问题,则可以省略上面第一个和第三个中的sep=""。或者,gsubfn包具有cat0函数,该函数与cat相同,但默认sep""

在这种情况下,循环似乎比它下面的非循环解决方案更清晰。

答案 1 :(得分:2)

我认为你过分担心报价会使自己绊倒。你真的不想要引号,所以不要试图在sprintf调用中转义它们:

sprintf("http://www.stevel.com/log/?xid=2275644&dd=%s", dates)
#-----------------
[1] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-15"
[2] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-16"
[3] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-17"
[4] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-18"
[5] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-19"
[6] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-20"
[7] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-21"