rstudio教程 java_R命令用于在Rstudio中将工作目录设置为源文件位置

本文提供了多种在RStudio中设置工作目录的方法,包括使用`setwd()`, `getSrcDirectory()`,`getActiveDocumentContext()`等。这些方法适用于不同平台和场景,确保R脚本能在任何环境下正确找到工作目录。" 80046578,7124336,Python os.walk与os.listdir遍历目录对比分析,"['Python', '文件操作', '目录操作', 'os模块']
摘要由CSDN通过智能技术生成

回答(13)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我知道这个问题已经过时,但我也在寻找解决方案,谷歌在最上面列出了这个问题:

this.dir

setwd(this.dir)

把它放在文件的某个地方(尽管最好是开头),以便根据该文件更改wd .

根据评论,这可能不一定适用于每个平台(Windows似乎可行,Linux / Mac适用于某些平台) . 请记住,此解决方案用于“获取”文件,而不一定用于在该文件中运行块 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

要获取源脚本的位置,可以使用 utils::getSrcDirectory 或 utils::getSrcFilename . 因此,可以使用以下命令将工作目录更改为当前文件的目录:

setwd(getSrcDirectory()[1])

如果您运行代码而不是源代码,这在RStudio中不起作用 . 为此,您需要使用 rstudioapi::getActiveDocumentContext .

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

当然,第二种解决方案要求您使用RStudio作为IDE .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这个答案可以帮助:

script.dir

注意:必须获取脚本才能返回正确的路径

BumbleBee的答案(使用parent.frame而不是sys.frame)对我不起作用,我总是收到错误 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

解决方案

dirname(parent.frame(2)$ofile)

不适合我 .

我正在使用强力算法,但有效:

File

Files

Path.file

Dir.wd

搜索目录时更简单:

Dirname

Dirs

dir_wd

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

dirname(rstudioapi::getActiveDocumentContext()$path)

适合我,但如果你不想使用rstudioapi并且你不在proyect中,你可以在你的路径中使用符号〜 . 符号〜指的是默认的RStudio工作目录(至少在Windows上) .

e5d40e70-963c-4c7a-a305-3f5cceee4da4.png

如果您的RStudio工作目录是"D:/Documents",则 setwd("~/proyect1") 与setwd("D:/Documents/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") 相同

这是我编写脚本的最佳方式,无论您使用的是什么计算机 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我只是在寻找这个问题的解决方案,来到这个页面 . 我知道它已过时但以前的解决方案对我不满意或不起作用 . 如果有兴趣,这是我的工作 .

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)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

对于rstudio,您可以使用rstudioapi自动将工作目录设置为脚本目录,如下所示:

library(rstudioapi)

# Getting the path of your current open file

current_path = rstudioapi::getActiveDocumentContext()$path

setwd(dirname(current_path ))

print( getwd() )

这在运行或源文件时有效 .

您需要先安装软件包rstudioapi . 请注意,我打印路径是100%确定我在正确的位置,但这是可选的 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我知道这已经过时了,但我无法让前面的答案工作得非常令人满意,所以我想贡献我的方法,以防任何其他人遇到BumbleBee的答案中提到的相同错误 .

我的基于一个简单的系统命令 . 您为该函数提供的所有内容都是脚本的名称:

extractRootDir

abs

path

ret

return(ret);

}

setwd(extractRootDir("myScript.R"));

函数的输出看起来像 "/Users/you/Path/To/Script" . 希望这有助于其他可能遇到困难的人 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

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

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

这个对我有用 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我意识到这是一个旧线程,但我遇到了类似的问题,需要设置工作目录,无法让任何解决方案适合我 . 这是什么工作,以防其他人在以后偶然发现:

# SET WORKING DIRECTORY TO CURRENT DIRECTORY:

system("pwd=`pwd`; $pwd 2> dummyfile.txt")

dir

n

n2

setwd(n2)

这有点令人费解,但基本上这使用系统命令来获取工作目录并将其保存到dummyfile.txt,然后R使用data.table :: fread读取该文件 . 其余的只是清理打印到文件的内容,这样我只剩下目录路径 .

我需要在集群上运行R,因此无法知道我最终会在哪个目录中(作业被分配了一个数字和一个计算节点) . 这对我有用 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

大多数GUI假设如果您在目录中并且“打开”,双击或以其他方式尝试执行.R文件,则它所在的目录将是工作目录,除非另有说明 . Mac GUI提供了一种更改默认行为的方法您可以在正在运行的会话中设置的“首选项”的“启动”面板中更改,并在下一次“启动”时生效 . 你也应该看看:

?Startup

RStudio文档说:

“当通过文件关联启动时,RStudio会自动将工作目录设置为打开文件的目录 . ”默认设置是将RStudio注册为.R文件的处理程序,尽管还提到了为RStudio设置与.Rdata和.R扩展名的默认“关联”的能力 . 在Linux上是否具有“处理程序”状态和“关联”状态是相同的,我无法分辨 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

dirname(parent.frame(2)$ofile)

dirname(rstudioapi::getActiveDocumentContext()$path)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果您使用UTF-8编码:

path

Encoding(path)

setwd(dirname(path))

如果尚未安装软件包rstudioapi,则需要安装软件包 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值