Rozumiem, że jest to nieaktualne, ale nie mogłem sprawić, by poprzednie odpowiedzi działały bardzo zadowalająco, więc chciałem wnieść swój wkład w moją metodę na wypadek, gdyby ktoś inny napotkał ten sam błąd, o którym mowa w komentarzach do odpowiedzi BumbleBee.
Mój jest oparty na prostym poleceniu systemowym. Wszystko, co podajesz do funkcji, to nazwa twojego skryptu:
extractRootDir <- function(x) {
abs <- suppressWarnings(system(paste("find ./ -name",x), wait=T, intern=T, ignore.stderr=T))[1];
path <- paste("~",substr(abs, 3, length(strsplit(abs,"")[[1]])),sep="");
ret <- gsub(x, "", path);
return(ret);
}
setwd(extractRootDir("myScript.R"));
Wynik funkcji wyglądałby tak "/Users/you/Path/To/Script"
. Mam nadzieję, że pomoże to każdemu, kto utknął.
?setwd
?getwd