【发布时间】:2013-03-25 16:39:21
【问题描述】:
提前感谢您的帮助。本质上,我正在编写一个构建 URL 的程序,该 URL 将提供一个 CSV 文件。该程序要求用户输入几个输入,然后将这些输入附加到基本 URL。我遇到的问题是,当我尝试将它们粘贴到 URL 中时,每个用户输入之间都会增加一个空格。问题出在#Build URL 行。
这里是代码
#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)
再次感谢您的帮助。
尊敬的,
乔纳森
【问题讨论】:
-
无法重现您的问题,对我来说您的代码有效...
-
我没有看到任何对问题的标量响应的空格:
[1] "ichart.finance.yahoo.com/table.csv?s=DELL&a=10&b=10&c=2012&d=10&e=31&f=2013&g=dignore=.csv"。sep=""应该解决这个问题。另请注意,在较新版本的 R 中,paste0()优于paste(...., sep = "")(它应该更快,并且节省了sep = ""的输入):-) -
我更新了我的代码 - 使用了 collapse=""(尽管建议使用 paste0(),我非常感谢。我的 URL 最后也有一个错误,应该是“g =d&ignore=.csv" 我仍然收到以下错误:文件中的错误(文件,“rt”):无法打开连接另外:警告消息:在文件(文件,“rt”)中:无法打开文件'ichart. Finance.yahoo.com/table.csv?s=DVN&a=11&b=1&c=2005&d=11&e=1&f=2011&g=d&ignore=.csv':没有这样的文件或目录
-
那里没有空格!您是否尝试将这样创建的 URL 粘贴到浏览器中以检查该 URL 是否有效?
-
然后天亮了 - 您需要将
"http://"添加到您正在使用的基本 URL 的开头。有关更多详细信息,请参阅下面的答案。你不需要collapse="";问题是 R 无法知道您正在输入 URL,因为您没有指定 R 处理的 URL 方案(协议)之一。