【发布时间】:2019-10-19 01:58:39
【问题描述】:
我正在编写一个 Rscript 来执行 Jtst 以进行配对交易。我首先声明了一个函数来找出两只单只股票之间的相关性,然后我添加了一个 for each 循环来执行股票列表的任务.然而,for each 循环没有识别第一个函数。
我按照网上资料的建议尝试使用doSHOW功能,但没有成功。
pkgs <- list("quantmod", "doParallel", "foreach", "urca")
lapply(pkgs, require, character.only = T)
registerDoParallel(cores = 4)
jtest <- function(t1, t2) {
start <- sd
getSymbols(t1, from = start)
getSymbols(t2, from = start)
j <- summary(ca.jo(cbind(get(t1)[, 6], get(t2)[, 6])))
r <- data.frame(stock1 = t1, stock2 = t2, stat = j@teststat[2])
r[, c("pct10", "pct5", "pct1")] <- j@cval[2, ]
return(r)
}
pair <- function(lst) {
d2 <- data.frame(t(combn(lst, 2)))
stat <- foreach(i = 1:nrow(d2), .combine = rbind) %dopar% jtest(as.character(d2[i, 1]), as.character(d2[i, 2]))
stat <- stat[order(-stat$stat), ]
rownames(stat) <- NULL
return(stat)
}
sd <- "2018-01-01"
tickers <- c("FITB", "BBT", "MTB", "STI", "PNC", "HBAN", "CMA", "USB", "KEY", "JPM", "C", "BAC", "WFC")
pair(tickers)
jtest(as.character(d2[i, 1]), as.character(d2[i, 2])) 中的错误: 任务 1 失败 - “找不到函数“jtest””
【问题讨论】:
-
.export = "jtest" -
谁能帮忙?
-
@Roland 当我添加 . export = "jtest" 对于每个函数 {stat
-
请阅读 foreach 文档:rdocumentation.org/packages/foreach/versions/1.4.4/topics/… 您需要将包加载到工人身上。
-
您需要导出变量
sd和tickers以及Roland 已经指出的内容。您必须明确地向每个核心提供要执行的任务的所有信息(全局变量、包、函数等)。