3

よろしくお願いします。基本的に、CSVファイルを提供するURLを作成するプログラムのスクリプトを作成しています。プログラムはユーザーにいくつかの入力を要求し、それらの入力をベースURLに追加します。私が得ている問題は、URLにそれらを一緒に貼り付けようとすると、各ユーザー入力の間にスペースが追加されることです。問題は#BuildURL行にあります。

これがコードです

 #URL Builder for Yahoo Finance
 #Requests Input from User, Builds URL, downloads csv.file from site
 #Requests are for:
      #Ticker (2-4 letter - character string)
      #Start Month (00 - 11 integer)
      #Start Day (1 - 31 integer)
      #Start Year (Four digit integer)
      #End Month (00 - 11 integer)
      #End Day (1 - 31 integer)
      #End Year (Four digit integer)

 #Functions
      Get_Ticker <- function(){readline("Please enter a Ticker:>>> ")} 
      Get_Month_Begin <- function(){as.numeric(readline("Enter the start month (MM):>>> "))}
      Get_Day_Begin <- function(){as.numeric(readline("Enter the start day (1-31) :>>> "))}
      Get_Year_Begin <- function(){as.numeric(readline("Enter the start year (YYYY) :>>> "))}
      Get_Month_End <- function(){as.numeric(readline("Enter the end month (MM) :>>> "))}
      Get_Day_End <- function(){as.numeric(readline("Enter the end day (1-31) :>>> "))}
      Get_Year_End <- function(){as.numeric(readline("Enter the end year :>>> "))}

 #Function Calls
      Ticker <- Get_Ticker()
      Month_Begin <- Get_Month_Begin()
      Day_Begin <- Get_Day_Begin()
      Year_Begin <- Get_Year_Begin()
      Month_End <- Get_Month_End()
      Day_End <- Get_Day_End()
      Year_End <- Get_Year_End()

 #Build URL
 #Example URL: ichart.finance.yahoo.com/table.csv?s=DVN&a=00&b=1&c=1992&d=11&e=31&f=2013&g=d&ignore=.csv
      CSV_Base_URL <- "ichart.finance.yahoo.com/table.csv?s="
      CSV_URL_Complete <- paste(CSV_Base_URL,Ticker,"&a=",Month_Begin,"&b=",Day_Begin,"&c=",Year_Begin,"&d=",Month_End,"&e=",Day_End,"&f=",Year_End,"&g=d&ignore=.csv",sep="")

 #Download CSV
      Yahoo_Finance_TBL <- read.csv(CSV_URL_Complete)

 #Write CSV File
      write.csv(Yahoo_Finance_TBL, file="Yahoo_Finance_File", row.names=FALSE)

繰り返しになりますが、私はあなたの援助に非常に感謝しています。

敬意を表して、

ジョナサン

4

2 に答える 2

3

スペースを避けるために、貼り付け(sep = "")を使用する必要がありますが、すでにそれを行っています。実際、あなたのコードは私にとってはうまく機能しているように見えるので、問題が何であるかはわかりません。Rセッションにコードを配置したときの出力は次のとおりです。

> Ticker <- Get_Ticker()
Please enter a Ticker:>>> GOOG
> Month_Begin <- Get_Month_Begin()
Enter the start month (MM):>>> 01
> Day_Begin <- Get_Day_Begin()
Enter the start day (1-31) :>>> 01
> Year_Begin <- Get_Year_Begin()
Enter the start year (YYYY) :>>> 2013
> Month_End <- Get_Month_End()
Enter the end month (MM) :>>> 02
> Day_End <- Get_Day_End()
Enter the end day (1-31) :>>> 28
> Year_End <- Get_Year_End()
Enter the end year :>>> 2013
> CSV_Base_URL <- "ichart.finance.yahoo.com/table.csv?s="
> CSV_URL_Complete <- paste(CSV_Base_URL,Ticker,"&a=",Month_Begin,"&b=",Day_Begin,"&c=",Year_Begin,"&d=",Month_End,"&e=",Day_End,"&f=",Year_End,"&g=dignore=.csv",sep="")
> CSV_URL_Complete
[1] "ichart.finance.yahoo.com/table.csv?s=GOOG&a=01&b=1&c=2013&d=2&e=28&f=2013&g=dignore=.csv"

結果のURLはうまく機能します。

于 2013-03-25T16:51:20.497 に答える
2

"http://"問題は、URLを作成するときにURLに追加しないことです。あなたがそれを言わなければ、RはこれがURLであることをどのように知ることになっていますか。現在、現在の作業ディレクトリのファイルシステムでその名前のファイルを探しています。

あなたが欲しい:

CSV_Base_URL <- "http://ichart.finance.yahoo.com/table.csv?s="

質問のコメントストリームに追加したURL有効であるため、上記の追加により、RはURLからCSVをダウンロードして読み取る必要があります。

`?read.csvには:

file:
....
      ‘file’ can also be a complete URL.  (For the supported URL
      schemes, see the ‘URLs’ section of the help for ‘url’.)

そしてそれは持っています:

 For ‘url’ the description is a complete URL, including scheme
 (such as ‘http://’, ‘ftp://’ or ‘file://’).  Proxies can be
 specified for HTTP and FTP ‘url’ connections: see ‘download.file’.

URLs:

     ‘url’ and ‘file’ support URL schemes ‘http://’, ‘ftp://’ and
     ‘file://’.

これが問題を説明しています。

ブラウザがURLバー(Chromeなど)からプロトコルを抑制していると、URLがアドレス部分だけでなくそれ以上のものを必要としていることを人々が知らなくなる可能性があると推測できますか?

于 2013-03-25T17:12:44.213 に答える