不带引号的 Quantmod 参数

Quantmod argument without quotation marks

我有以下代码:

 library("quantmod")
 stockValuation <- function(company1, company2, 
                               a=GOOGL,
                               b=AAPL,
                               start_i = "2018-01-01", end_i = "2018-05-20") {



      #start <- as.Date(start_i)
      #end <- as.Date(end_i)

      tckr <- c(company1, company2)

      getSymbols(tckr, src = "yahoo", from = start_i, to = end_i)

      chrtlist <- c(a,b)

      chartSeries(a, multi.col=TRUE, theme='white', TA="addMACD()") 

      dev.copy(pdf, paste(company1,".pdf",sep=""))
      dev.off()

      chartSeries(b, multi.col=TRUE, theme='white', TA="addMACD()") 
      dev.copy(pdf,  paste(company2, ".pdf",sep=""))
      dev.off()

    }

想法是有一个生成两个图表的函数,然后将其导出到 .pdf,但是 chartSeries 函数不想在引号中使用参数,即相反,您需要使用 GOOGL 而不是 "GOOGL" getSymbols 使用引号,因此您需要 "GOOGL".

现在我创建了一个带有两个参数的版本,一个带引号,另一个不带引号如何强制它只使用一个参数?即作为论据,我想拥有 "GOOGL" 或 GOOGL,但不能同时拥有两者

为您的函数设置公司代码参数。然后在 getSymbols() 调用中使用 auto.assign = FALSE,这样您就可以将每个代码的数据分配给特定对象。然后你可以在这两个对象上调用 chartSeries()

这是按照我的建议执行的函数的更新版本:

stockValuation <-
function(ticker1, ticker2, from = "2018-01-01", to = "2018-05-20")
{
  a <- getSymbols(ticker1, from = from, to = to,
                  src = "yahoo", auto.assign = FALSE)
  b <- getSymbols(ticker2, from = from, to = to,
                  src = "yahoo", auto.assign = FALSE)

  chartSeries(a, multi.col = TRUE, theme = "white", TA = "addMACD()") 
  dev.copy(pdf, paste0(ticker1, ".pdf"))
  dev.off()

  chartSeries(b, multi.col = TRUE, theme = "white", TA = "addMACD()") 
  dev.copy(pdf, paste0(ticker2, ".pdf"))
  dev.off()
}