【问题标题】:character variable as parameter of function字符变量作为函数的参数
【发布时间】:2011-03-25 21:34:48
【问题描述】:

我下载财务数据的部分代码:

library(quantmod)

tickers <- c("XOM", "DIS")
stock1 <- getSymbols(tickers[1], from="2010-03-01", to="2011-02-28", auto.assign=F)
stock2 <- getSymbols(tickers[2], from="2010-03-01", to="2011-02-28", auto.assign=F)

pair <- merge(Ad(stock1), Ad(stock2), all=F)             # 'xts' object, merge adjusted close
pair.DF <- data.frame(pair)                              #  data frame

但我想这样调用函数:

tickers <- function(x, y) {
stock1 <- getSymbols(x, from="2010-03-01", to="2011-02-28", auto.assign=F)
stock2 <- getSymbols(y, from="2010-03-01", to="2011-02-28", auto.assign=F)

pair <- merge(Ad(stock1), Ad(stock2), all=F)            
pair.DF <- data.frame(pair)       
}

然后:

tickers("XOM", "DIS")

或类似的东西。但我得到的是不好的结果。在这种情况下,“x”和“y”不是数字,而是字符。 这似乎很容易,但是.. 感谢您的任何建议。

【问题讨论】:

  • 你的代码对我来说运行良好:x &lt;- tickers("XOM", "DIS")&gt; all.equal(pair.DF, x)[1] TRUE
  • 是的,它运行。对不起,我的失败。我有很多循环的功能。没关系。

标签: r loops quantmod


【解决方案1】:
tickers <- function(x, y) {
stock1 <- getSymbols(x, from="2010-03-01", to="2011-02-28", auto.assign=F)
stock2 <- getSymbols(y, from="2010-03-01", to="2011-02-28", auto.assign=F)

pair <- merge(Ad(stock1), Ad(stock2), all=F)            
pair.DF <- data.frame(pair)       
return(pair.DF)
}

只要您最后返回 pair.DF,就可以为我工作。是你的问题吗?

我不认为字符类是问题:

class(tickers[1])==class("XOM")
TRUE

【讨论】:

  • 抱歉有不必要的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 2020-09-13
  • 2011-03-19
  • 2013-12-23
  • 2014-12-28
  • 1970-01-01
相关资源
最近更新 更多