我有一个stock/etf符号的矢量,根据我的兴趣不同.
例如:
symbols_v <- c('UPRO','TLT','SPXU','TBT','DRN','URE','SOXL')
Run Code Online (Sandbox Code Playgroud)
我想使用组合规则,一次两个迭代向量,生成对.
例如:
p <- combn(symbols_v, 2)
Run Code Online (Sandbox Code Playgroud)
然后,来自p的每一对都应传递到(用户定义的)两个参数函数" f(x,y)",该函数将下载股票数据并执行相关和其他功能.
我的问题是:1)下面第2步中用于p的最佳数据结构是什么?2)给定数据结构p,解析它以将对提供给函数f的最简单方法是什么?
简介:如何获取combn()函数的结果并将每对传递给函数f(x,y)?
我试图最小化循环,因为在R中被认为是"慢".
我可能遗漏了一些基本的东西,但我似乎无法完全理解它.
在提供答案的同时请随意侮辱我的智慧:)
Jos*_*ich 10
你可以使用以下FUN参数combn:
library(quantmod) # for getSymbols
symbols_v <- c('UPRO','TLT','SPXU') # shorter example
# simple function to download data and calculate correlation between close prices
f <- function(x) {
x1 <- getSymbols(x[1], auto.assign=FALSE)
x2 <- getSymbols(x[2], auto.assign=FALSE)
y <- merge(Cl(x1),Cl(x2))
cor(y[,1],y[,2],use="complete.obs")
}
# run 'f' on each pair
p <- combn(symbols_v, 2, FUN=f, simplify=FALSE)
[[1]]
TLT.Close
UPRO.Close -0.6394617
[[2]]
SPXU.Close
UPRO.Close 0.0947242
[[3]]
SPXU.Close
TLT.Close -0.06216682
Run Code Online (Sandbox Code Playgroud)