2016-05-14 81 views
0

以下代碼產生錯誤Quandl參數錯誤:中的R

Error in match.arg(transform) : 'arg' should be one of 「」, 「diff」, 「rdiff」, 「normalize」, 「cumul」, 「rdiff_from」 Called from: match.arg(transform)

library(Quandl) 
std_chart<-function(qcode, type="raw", transform= "", collapse="", logscale="", 
       main="", xlab="", ylab="", recession_shading=TRUE, hline="", 
       trend=""){ 
data<-Quandl(code=qcode,type=type,transform=transform,collapse=collapse) 
return(data) 
} 

std_chart(qcode="FRED/GDP", 
     logscale="log10", 
     main="Gross Domestic Product (GDP) Value", 
     ylab="Billions of Dollars") 

std_chart(qcode="FRED/GDP", 
     transform="", 
     logscale="log10", 
     main="Gross Domestic Product (GDP) Value", 
     ylab="Billions of Dollars") 

兩個調用給函數產生相同的誤差。當我調試似乎說法是按照以下的選項之一:

Browse[1]> arg==choices[1] [1] TRUE

我用這個Quandl功能很多次都沒有問題。任何幫助讚賞。我在想這個問題很明顯,我仍然想念它。這只是我實際嘗試着重於錯誤的簡化版本。

基於R版本3.1.2 Quandl版本2.8.0

+0

該錯誤消息似乎相當明確。我不知道你爲什麼認爲名爲'choices'的對象與此有關。如果您將變量參數'diff'設爲默認值,那麼您會收到一條錯誤消息,指出'collapse'不匹配,並且如果您修復了預期的輸出。投票結果太小而無法回答。 –

+0

@ 42我很高興這很清楚。請多分享一下你的智慧。聲明Quandl(code =「GOOG/AMEX_EEM」,type =「raw」,transform =「」)會產生錯誤'arg'應該是「」,「diff」,「rdiff」,「normalize」,「cumul 「,」rdiff_from「。爲什麼不能通過?在這種情況下,我不想進行任何轉換。我明白,我可以調用這個沒有參數的聲明,但我想建立一個函數,通過transform參數。謝謝。 – rmacey

+0

它說,「變換」這個論點應該是這些選擇之一,並且你給了「變換」一個值「」。你的電話沒有傳遞任何價值。 EricLeCoutre和Macey給出了兩種不同的解決方案,兩者都有意義。第三種解決方案是從Quandl調用中刪除'transform = transform',你將得到該參數的默認值。 –

回答

1

代替通過「」的功能,人們需要NULL傳遞給該函數。 Quandl這樣的函數的文檔很奇怪,包括

transform = c("", "diff", "rdiff", "normalize", "cumul", "rdiff_from")

這似乎表明「」是一個有效的參數。因此,而不是調用具有

Quandl(code,transform="") 

的功能,這將產生錯誤,使用

Quandl(code, transform=NULL). 
2

如果你分析參數管理,屁股現場match.arg依靠pmatch,這不管理空字符串匹配:

看看?pmatch

pmatch("", "")        # returns NA 

當你std_chart功能僅僅是圍繞Quandl查詢的包裝,我建議基礎上你的代碼「...」:

enstd_chart<-function(qcode, logscale="", 
       main="", xlab="", ylab="", 
       recession_shading=TRUE, hline="", 
       trend="",...){ 
# ...: parameters to be passed to Quandl call 
data<-Quandl(code=qcode,...) 
return(data) 
} 

std_chart(qcode="FRED/GDP", 
     logscale="log10", 
     main="Gross Domestic Product (GDP) Value", 
     ylab="Billions of Dollars") 

std_chart(qcode="FRED/GDP", 
     collapse="annual")