-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 に答える