Не удается найти функцию, объявленную внутри для каждого цикла - PullRequest
0 голосов
/ 03 июня 2019

Я кодирую Rscript для выполнения Jtst для парной торговли. Сначала я объявил функцию для определения корреляции между двумя отдельными акциями, затем я добавляю a для каждого цикла, чтобы выполнить задачу для списка акций.Однако для каждого цикла не распознается первая функция.

Я пытался использовать функцию 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 ""

...