使用get()引用quantmod数组中带有R的列?
我是R新手,在项目中使用使用get()引用quantmod数组中带有R的列?,r,get,finance,quantmod,trading,R,Get,Finance,Quantmod,Trading,我是R新手,在项目中使用quantmod()包。以下代码块起作用: require(quantmod) stocks<-c("MMM", "MSFT", "BP") for(i in 1:length(stocks)){ getSymbols(stocks[i], from= "2013-07-01") s<-get(stocks[i]) dr<-dailyReturn(s) print(paste(dr)) } 这是有效的: BP$BP.Open 但是,这不起作用: s
quantmod()
包。以下代码块起作用:
require(quantmod)
stocks<-c("MMM", "MSFT", "BP")
for(i in 1:length(stocks)){
getSymbols(stocks[i], from= "2013-07-01")
s<-get(stocks[i])
dr<-dailyReturn(s)
print(paste(dr))
}
这是有效的:
BP$BP.Open
但是,这不起作用:
s$s.Open #NULL
为了提供足够的上下文,我的目标是遍历股票向量,检查]条件,然后计算当天的一些技术分析和时间序列数据,并将其复制到ARFF文件中,用作机器学习环境(Weka)的培训示例。谢谢。一般来说,使用提取器函数
Op
等更容易。请参见?OHLC.Transformations
。此外,如果只有一个符号,则可以在调用getSymbols
时使用auto.assign=FALSE
,以避免同时调用get
s <- getSymbols("BP", auto.assign=FALSE)
您也可以通过这种方式将TTR函数应用于每个符号
rsi <- eapply(e, function(x) RSI(Op(x), n=14))
s$s.Open
不起作用,因为列名基于存储在对象中的数据的股票代码,而不是基于对象名称本身。如果您仔细想想,就无法让getSymbols
知道您将其输出分配给的对象的名称。Joshua,这(全部)在getSymbols
帮助页面中是完美的。当前的示例都有点人为,只是展示了使用参数的各种方法。他们中没有一个使用eapply
,你在这里展示的方式似乎与getSymbols
类似于葡萄酒和奶酪:-)@DarrenCook:如果有个好撒玛利亚人能提供补丁文件就好了……;)
s <- getSymbols("BP", auto.assign=FALSE)
e <- new.env()
getSymbols(stocks, env=e)
dr <- eapply(e, dailyReturn)
rsi <- eapply(e, function(x) RSI(Op(x), n=14))
rsi_all <- do.call(cbind, rsi)