在Rstudio工作目录设置为源文件位置R指令(R command for setting work

2019-06-21 10:39发布

我的工作出R.各R代码包含在一个特定的文件夹一些教程。 有在那里的数据文件和其他文件。 我想打开.r文件和源是这样的,我没有改变Rstudio工作目录,如下图所示:

有没有在R.自动指定我的工作目录的方式

Answer 1:

我知道这个问题已经过时,但是我正在寻找的是一个解决方案,以及与谷歌在列出了最顶端:

this.dir <- dirname(parent.frame(2)$ofile)
setwd(this.dir)

把那个地方到文件(最好是开始,虽然),从而使WD根据该文件改变。

根据该意见,这可能不一定每一个平台上工作(的Windows似乎工作,Linux的/ Mac的一些)。 请记住,这个解决方案是“外包”的文件,并不一定是在该文件中运行块。

又见得到`source`d文件的文件名和路径



Answer 2:

要获得来源正在脚本的位置,你可以使用utils::getSrcDirectoryutils::getSrcFilename 。 因此,改变工作目录到当前文件的功能也可以用:

setwd(getSrcDirectory()[1])

如果你运行 ,而不是荷兰国际集团它的代码,这并不在RStudio工作。 对于这一点,你需要使用rstudioapi::getActiveDocumentContext

setwd(dirname(rstudioapi::getActiveDocumentContext()$path))

这第二个解决方案需要您使用RStudio作为IDE,当然。



Answer 3:

这个答案可以帮助:

script.dir <- dirname(sys.frame(1)$ofile)

注:脚本必须以返回正确路径来源

我发现它在: https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory-

该BumbleBee's答案(与parent.frame代替sys.frame)didn't工作对我来说,我总是得到一个错误。



Answer 4:

dirname(rstudioapi::getActiveDocumentContext()$path)

对我的作品,但如果你不想使用rstudioapi,你是不是在proyect,您可以使用符号〜在你的路径。 符号〜指的是默认RStudio(至少在Windows上)的工作目录。

如果您RStudio工作目录为“d:/文档”, setwd("~/proyect1")是一样的setwd( “d:/文档/ proyect1”)。

一旦你设置,您可以导航到一个子目录: read.csv("DATA/mydata.csv") 相同read.csv("D:/Documents/proyect1/DATA/mydata.csv")

如果要导航到父文件夹,您可以使用"../" 。 例如: read.csv("../olddata/DATA/mydata.csv")其是相同的read.csv("D:/Documents/oldata/DATA/mydata.csv")

这是我能写脚本,不管你用的是什么电脑最好的办法。



Answer 5:

解决方案

dirname(parent.frame(2)$ofile)

不是为我工作。

我使用的是蛮力算法,但工程:

File <- "filename"
Files <- list.files(path=file.path("~"),recursive=T,include.dirs=T)
Path.file <- names(unlist(sapply(Files,grep,pattern=File))[1])
Dir.wd <- dirname(Path.file)

更容易搜索目录时:

Dirname <- "subdir_name"
Dirs <- list.dirs(path=file.path("~"),recursive=T)
dir_wd <- names(unlist(sapply(Dirs,grep,pattern=Dirname))[1])


Answer 6:

对于rstudio ,您可以使用自动设置您的工作目录的脚本目录rstudioapi这样的:

library(rstudioapi)

# Getting the path of your current open file
current_path = rstudioapi::getActiveDocumentContext()$path 
setwd(dirname(current_path ))
print( getwd() )

运行或Sourceing您的文件时,它的工作原理。

您需要首先安装包rstudioapi。 请注意我打印路径,以确保我在正确的地方100%,但这是可选的。



Answer 7:

我只是在寻找一个解决这个问题,来到了这个页面。 我知道它的过时,但以前的解决方案,其中不满意或对我没有工作。 这是我的工作,周围如果有兴趣。

filename = "your_file.R"
filepath = file.choose()  # browse and select your_file.R in the window
dir = substr(filepath, 1, nchar(filepath)-nchar(filename))
setwd(dir)


Answer 8:

我明白这是过时的,但我不能得到前者的答案很满意地工作,所以我想贡献我的方法情况下,任何其他人遇到的意见,大黄蜂的回答中提到了同样的错误。

煤矿是基于一个简单的系统命令。 所有你喂的功能就是脚本的名称:

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"));

从功能的输出会看起来像"/Users/you/Path/To/Script" 。 希望这可以帮助别人谁可能得到坚持。



Answer 9:

如果你在Linux上工作,你可以试试这个:

setwd(system("pwd", intern = T) )

这个对我有用。



Answer 10:

我知道这是一个古老的线程,但我也有类似的问题,需要设置工作目录,并不能得到任何的解决方案,为我工作。 下面是没有工作,在跨越这种情况下,任何人绊倒以后:

# SET WORKING DIRECTORY TO CURRENT DIRECTORY:
system("pwd=`pwd`; $pwd 2> dummyfile.txt")
dir <- fread("dummyfile.txt")
n<- colnames(dir)[2]
n2 <- substr(n, 1, nchar(n)-1)
setwd(n2)

这是一个有点令人费解,但基本上这个使用系统命令来获取工作目录,并将其保存到dummyfile.txt,则R读取使用data.table :: FREAD该文件。 剩下的只是清理什么得到了打印到文件,这样我只剩下的目录路径。

我需要在集群上运行R,所以没有办法知道我在想到底是什么一目录(作业都会分配一个号码和一个计算节点)。 这奏效了我。



Answer 11:

大多数的GUI假设,如果你在一个目录中,“打开”,双击,或以其他方式试图执行一个.R文件,在其驻留将是工作目录,除非另有规定的目录中。 Mac的图形用户界面提供了更改默认行为,这是您在运行的会话中设置的首的启动面板多变,并成为下一个“启动”有效的方法。 你应该也看:

?Startup

该RStudio文档说:

“当通过文件关联启动,RStudio自动设置工作目录打开文件的目录。” 默认设置是RStudio被注册为.R文件处理,虽然也有提及设置一个默认的“关联”与RStudio为.Rdata和.R的扩展能力。 是否有“处理”状态和“协会”的地位是在Linux上一样,我不能告诉。

http://www.rstudio.com/ide/docs/using/workspaces



Answer 12:

dirname(parent.frame(2)$ofile)  

不为我工作,要么,但以下(如建议https://stackoverflow.com/a/35842176/992088 )在Ubuntu 14.04为我工作

dirname(rstudioapi::getActiveDocumentContext()$path)


Answer 13:

如果您在使用UTF-8编码:

path <- rstudioapi::getActiveDocumentContext()$path
Encoding(path) <- "UTF-8"
setwd(dirname(path))

您需要安装包rstudioapi如果你还没有这么做过。



文章来源: R command for setting working directory to source file location in Rstudio