13

I've written a few functions for a package that use relative paths like:

"./data/foobar.rds"

Here's an example function:

foo <- function(x) { 
x <- readRDS("./data/bar.rds")
return(x)
}

Now, if I were to be working in the development path of the package, this works as I expect. But when I load the package, this path uses the current working directory rather than the relative path of the package.

How does one set it up such that the path for functions within a package maintain their within the package relative paths?

bartektartanus
  • 14,101
  • 5
  • 73
  • 98
Brandon Bertelsen
  • 42,225
  • 33
  • 153
  • 250

1 Answers1

4

As Andrie notes, you can use system.file, which "finds the full file names of files in packages etc."

x <- readRDS(system.file("help", "aliases.rds", package="MASS"))
Josh O'Brien
  • 154,425
  • 26
  • 353
  • 447
  • `dir(system.file("help", package = "MASS"))` – dickoa Aug 15 '12 at 21:31
  • @BrandonBertelsen -- The call to `system.file()` resolves to `/MASS/help/aliases.rds`, which is where the file to be read resides. (All initial unnamed arguments get soaked up by `...`, which `system.file()` treats as a set of subdirectories and files, from which it constructs paths within the given package.) – Josh O'Brien Aug 15 '12 at 21:35