-2

我想将4个字符串粘贴在一起,代码在这里:

urlstring<-"lee/"
code<-read.csv("D:\\list.csv",sep="\n",head=FALSE)
for(y in code){count<-1
           while(count<3){
             mydate<-Sys.Date()-count
             filename<-paste(urlstring,mydate,"&symbol=",y,sep="")
             print(filename)
             count<-count+1
           }
         }  

我的问题是为什么输出是,日期首先改变:

lee/date=2013-11-14&symbol=1    
lee/date=2013-11-14&symbol=2    
lee/date=2013-11-13&symbol=1    
lee/date=2013-11-13&symbol=2   

但在我看来,结果应该是这样的,应该首先更改代码的值:

lee/date=2013-11-14&symbol=1    
lee/date=2013-11-13&symbol=1    
lee/date=2013-11-14&symbol=2    
lee/date=2013-11-13&symbol=2  
4

1 回答 1

1

就像@mnel 说的那样。因为code = 1:2您的代码会产生正确的结果。请注意,不需要嵌套的 for-while 循环,矢量化解决方案使用更少的代码并且通常更快:

code = rep(1:2, each = 2)
mydate = Sys.Date() - code
sprintf('lee/date=%s&symbol=%d', mydate, code)
[1] "lee/date=2013-11-14&symbol=1" "lee/date=2013-11-14&symbol=1"
[3] "lee/date=2013-11-13&symbol=2" "lee/date=2013-11-13&symbol=2"

这种解决方案称为向量化,因为当sprintf与向量一起使用时,结果也是一个向量,而无需显式使用循环。

于 2013-11-15T06:41:31.093 回答