2012-08-15 14 views
10

Napisałem kilka funkcji dla opakowania, które używają ścieżek względnych jak:opakowania ścieżek względnych w R

"./data/foobar.rds" 

Oto przykład funkcja:

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

Teraz, gdybym miał być pracując na ścieżce rozwoju pakietu, działa to tak, jak oczekuję. Ale kiedy ładuję pakiet, ta ścieżka używa bieżącego katalogu roboczego zamiast względnej ścieżki pakietu.

W jaki sposób ustawić tak, aby ścieżka do funkcji w pakiecie utrzymywała się w ścieżce względnej?

+1

See 'system.file' i' .path.package' – Andrie

+0

Tak, coś takiego jak 'x <-? ReadRDS (pasta (system.file (pakiet = "pkgname"),"/data/bar .rds ", sep =" "))'? –

+1

Jeśli chcesz czegoś niezależnego od OS spróbuj x <- 'readRDS (file.path (system.file (package =" pkgName ")," data "," bar.rds "))' – dickoa

Odpowiedz

5

Jak zauważa Andrie, można użyć system.file, która "znajduje pełne nazwy plików w paczkach itp."

x <- readRDS(system.file("help", "aliases.rds", package="MASS")) 
+0

Dlaczego "pomoc" jest potrzebna? –

+0

'dir (system.file (" pomoc ", pakiet =" MASS "))' – dickoa

+0

@BrandonBertelsen - Wywołanie funkcji 'system.file()' rozwiązuje '' /MASS/help/aliases.rds', gdzie znajduje się plik przeznaczony do odczytu. (Wszystkie początkowe nienazwane argumenty zostają wchłonięte przez '...', które 'system.file()' traktuje jako zbiór podkatalogów i plików, z których buduje ścieżki w ramach danego pakietu.) –

Powiązane problemy