Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找不到在for each循环中声明的函数_R_Trading - Fatal编程技术网

找不到在for each循环中声明的函数

找不到在for each循环中声明的函数,r,trading,R,Trading,我正在编写一个Rscript,用于为成对交易执行Jtst。我首先声明了一个函数以找出两个单一股票之间的相关性,然后我添加了一个for each循环来执行股票列表的任务。但是for each循环无法识别第一个函数 我曾尝试使用互联网上的信息建议的doSHOW功能,但它不起作用 pkgs <- list("quantmod", "doParallel", "foreach", "urca") lapply(pkgs, require, character.only = T) register

我正在编写一个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)


pkgs在我在foreach调用中指定了必要的函数之前,我也遇到了同样的问题。该函数用于生成时间序列变量的滞后

此版本不起作用:

 Ylag = foreach(i = 1:maxlagsY,.combine = 'cbind') %dopar%{mylag(Y,k = i)}
而这一个是:

Ylag = foreach(i = 1:maxlagsY,.export = "mylag",.combine = 'cbind') %dopar%{mylag(Y,k = i)}

因此,答案是在foreach调用中指定用户定义的函数。

.export=“jtest”
我刚刚添加时,有人能帮忙吗?@Roland。export=“jtest”在每个函数的{stat请阅读foreach文档:您需要将包加载到工人身上。您需要导出变量
sd
tickers
,以及罗兰已经指出的内容。您必须明确地向每个核心提供要执行任务的所有信息(全局变量、包、函数等)。