gpt4 book ai didi

r - 使用 get() 来引用带有 R 的 quantmod 数组中的列?

转载 作者:行者123 更新时间:2023-12-02 00:06:34 25 4
gpt4 key购买 nike

我是 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))
}

但是,我需要引用特定的列来从TTR包中计算出一些技术分析指标。例如:

open<-MMM$MMM.Open
RSI(open, n=14)

当我检查时:

identical(s, BP) #TRUE

这有效:

BP$BP.Open

但是,这不起作用:

s$s.Open #NULL

为了提供足够的上下文,我的目标是遍历一个股票向量,检查一个]条件,然后计算当天的一些技术分析和时间序列数据,并将其复制到 ARFF 文件中用作训练示例机器学习环境 (Weka)。谢谢。

最佳答案

使用提取器函数 Op 等通常更容易。请参阅 ?OHLC.Transformations。此外,如果您只有一个符号,则可以在调用 getSymbols 时使用 auto.assign=FALSE 以避免同时调用 get .

s <- getSymbols("BP", auto.assign=FALSE)

如果你有多个符号,将它们存储在一个环境中然后使用 eapply 循环它们会更容易:

e <- new.env()
getSymbols(stocks, env=e)
dr <- eapply(e, dailyReturn)

您也可以通过这种方式将 TTR 函数应用于每个符号。

rsi <- eapply(e, function(x) RSI(Op(x), n=14))

并且您可以使用 do.callcbind 将它们放入单个对象中。

rsi_all <- do.call(cbind, rsi)

关于r - 使用 get() 来引用带有 R 的 quantmod 数组中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18106279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com