将工作目录设置为源文件位置的命令

12

RStudio有一个有用的功能:

Session -> Set Working Directory -> To Source File Location

有没有不使用下拉菜单的方法来实现这个?

更新:

也许更好的提问方式是:

是否有一个命令可以返回当前R脚本的文件路径?

我还发现了这个帖子,但这些解决方案对我都没用。即使是Hadley的!

Rscript:确定正在执行的脚本的路径


这可能会有所帮助。请检查?setwd()。 - KFB
4个回答

2
您可以使用以下方法:
source("script.R", chdir = TRUE)

将“script.R”更改为您感兴趣的文件的名称。


3
谢谢,这很接近了!但是假设我已经开始了一个新的R文件并将其保存到某个位置。然后我想将工作目录设置为该文件所在的位置。如果不知道路径,我就无法对该文件进行源代码引用--这正是我们试图自动解决的问题。 - Alex Coppock
R帮助中提到了'chdir': 如果为TRUE并且文件是一个路径名,则为了评估而临时更改R工作目录为包含该文件的目录。 - Faeze

1
pathwd<-sub("/filename","",system("find -perm -g=w -type f -name 'filename'",intern=T)[1])
setwd(pathwd)

确保你的文件名是唯一的。

pathwd <- sub("/filename", "", system("find -perm -g=w -type f -name 'filename'", intern = T)[1]) 警告信息: 运行命令'find -perm -g=w -type f -name 'filename''的状态为1 find: 非法选项 -- p 使用方法:find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression] - Alex Coppock
@AlexCoppock 我建议你可能在使用Mac,而Ciro则在使用Linux。 - Ricky McMaster

0

这个在大多数系统上都可以工作,但在 Mac 上可能会有一些小问题。

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

1
谢谢 -- 我在使用 Mac 电脑... parent.frame(2)$ofile 对我来说是空的。 - Alex Coppock

0

对于Mac用户,@Ciro上面的答案略有不同:

pathwd<-sub("/dummy.R","",system("find . -type f -name dummy.R",intern=T)[1]) 
setwd(pathwd)

请将dummy.R替换为您的文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接