R: terceirização de arquivos usando um caminho relativo

A obtenção de arquivos usando um caminho relativo é útil ao lidar com grandes bases de código. Outras linguagens de programação possuem mecanismos bem definidos para o fornecimento de arquivos usando um caminho relativo ao diretório do arquivo que está sendo originado. Um exemplo é o Rubyrequire_relative. O que é uma boa maneira de implementar o fornecimento de caminho relativo em R?

Abaixo está o que eu reuni um tempo atrás usando várias receitas e posts do fórum R. Funcionou bem para mim para o desenvolvimento direto, mas não é robusto. Por exemplo, ele quebra quando os arquivos são carregados viatestthat biblioteca, especificamenteauto_test(). rscript_stack() devolvecharacter(0).

# Returns the stack of RScript files
rscript_stack <- function() {
  Filter(Negate(is.null), lapply(sys.frames(), function(x) x$ofile))
}

# Returns the current RScript file path
rscript_current <- function() {
  stack <- rscript_stack()
  r <- as.character(stack[length(stack)])
  first_char <- substring(r, 1, 1)
  if (first_char != '~' && first_char != .Platform$file.sep) {
    r <- file.path(getwd(), r)
  }
  r
}

# Sources relative to the current script
source_relative <- function(relative_path, ...) {
  source(file.path(dirname(rscript_current()), relative_path), ...)
}

Você conhece uma melhorsource_relative implementação?

questionAnswers(1)

yourAnswerToTheQuestion