R函数打印变量但报告找不到对象<variable>

时间:2016-05-12 03:58:41

标签: r

我正在进行一系列嵌套函数调用并看到一些不寻常的行为,我只能通过一个简单的例子来复制,所以原始代码如下:

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;找不到

关于我为什么会看到这种行为的任何想法?

1 个答案:

答案 0 :(得分:0)

我怀疑您没有正确地将getDateRanges的输出传递给getDateRanges

尝试以下内容:

quotes <- getMultipleYqlQuotes("startDate"=dateRanges[1], "endDate"=dateRanges[2])

您可以将开始日期和结束日期的向量传递给getMultipleYqlQuotes,但在函数体中,您必须引用向量的元素。如果使用上述方法,则无需重写此方法。