我正在进行一系列嵌套函数调用并看到一些不寻常的行为,我只能通过一个简单的例子来复制,所以原始代码如下:
source("DataManager.R")
x <- getQuotesFromService('JNJ', '2016-04-01', '2016-05-10')
并获得以下输出:
getQuotesFromService parameters:
sDate= 2016-04-01 , eDate= 2016-05-10 , service= finance.yahoo
getQuotesFromService USING FINANCE.YAHOO SERVICE:
sDate= 2016-04-01 , eDate= 2016-05-10 , service= finance.yahoo
1 getDateRanges params: startDate= 2016-04-01 | endDate= 2016-05-10
后跟此错误消息:
Error in cat("1 getDateRanges params: startDate=", startDate, "| endDate=", :
object 'startDate' not found
由此代码生成:
getQuotesFromService <- function(ticker, sDate, eDate, service="finance.yahoo") {
library(XML)
cat("getQuotesFromService parameters:\n",
"sDate=", sDate, ", eDate=", eDate, ", service=", service, "\n")
quotes <- NULL
if(service == "finance.yahoo") {
source('YahooQuotes.R')
cat("getQuotesFromService USING FINANCE.YAHOO SERVICE:\n",
"sDate=", sDate, ", eDate=", eDate, ", service=", service, "\n")
dateRanges <- getDateRanges(sDate, eDate, 360, 10)
quotes <- getMultipleYqlQuotes(dateRanges)
}
return(quotes)
}
调用此函数:
getDateRanges <- function(startDate, endDate,
daysInInterval=360,
maxAllowableYears=10) {
cat('1 getDateRanges params: startDate=', startDate,
'| endDate=', endDate, '\n')
## MORE STUFF HERE, BUT GETS EXECUTED AFTER POINT OF ERROR ##
}
让我感到困惑的是, startDate 会在 getDateRanges 的 cat 调用中打印出来,但R告诉我 object&#39; startDate&#39;找不到。
关于我为什么会看到这种行为的任何想法?
答案 0 :(得分:0)
我怀疑您没有正确地将getDateRanges
的输出传递给getDateRanges
。
尝试以下内容:
quotes <- getMultipleYqlQuotes("startDate"=dateRanges[1], "endDate"=dateRanges[2])
您可以将开始日期和结束日期的向量传递给getMultipleYqlQuotes
,但在函数体中,您必须引用向量的元素。如果使用上述方法,则无需重写此方法。