R: pozyskiwanie plików przy użyciu ścieżki względnej

Pozyskiwanie plików przy użyciu ścieżki względnej jest przydatne w przypadku dużych baz kodu. Inne języki programowania mają dobrze zdefiniowane mechanizmy pozyskiwania plików przy użyciu ścieżki względnej do katalogu, do którego pochodzi plik. Przykładem jest Rubyrequire_relative. Jaki jest dobry sposób na wdrożenie względnego pozyskiwania ścieżek w R?

Poniżej przedstawiam to, co razem złożyłem, korzystając z różnych przepisów i postów na forum R. To działało dobrze dla mnie, jeśli chodzi o prosty rozwój, ale nie jest solidne. Na przykład zrywa się, gdy pliki są ładowane przeztestthat w szczególności bibliotekiauto_test(). rscript_stack() zwracacharacter(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), ...)
}

Czy wiesz coś lepszegosource_relative realizacja?

questionAnswers(1)

yourAnswerToTheQuestion