如何在R中动态获取文件夹和文件路径
How to get folder and file path dynamically in R
我有一个项目文件夹,名称为 project
。结构如下所示
project
dataset
output
scripts
现在,我想从 dataset
文件夹中提取 read
文件并在 output
文件夹中提取 write
文件。我所有的代码都在 scripts
文件夹中。
我可以使用硬编码路径样式来完成,例如,
df_1 <- read.csv(~project/dataset/test.csv)
df_2 <- write.csv(~project/output/test_output.csv)
这(硬编码)导致问题。如果我 运行 来自另一个设备的代码或者如果另一个人想要 运行 在 his/her 设备中编码,那么他们需要手动更改路径。
有什么方法可以写代码,不用人手动改路径地址吗?
习惯上启动相对于访问数据的路径的脚本。
例如,您可以在您的终端中执行如下操作:
cd path/to/data
Rscript path/to/script.r
这会将工作目录设置为 path/to/data
,要在 R 中访问此数据,您现在可以简单地使用相对路径:
df_1 <- read.csv('dataset/test.csv')
write.csv(df_1, 'output/test_output.csv')
如果您不想通过终端打开 R,Sys.info()
提供了您可以在此处利用的数据。 Sys.info()["user"]
提供当前 R 用户的 ID,因此您可以像这样在文件顶部设置工作目录:
if(Sys.info()["user"] == "User 1") {
setwd("[User 1's directory]")
} else if(Sys.info()["user"] == "User 2") {
setwd("[User 2's directory]")
}
然后,一旦您将工作目录设置为跨用户的同一位置,您就可以使用相同的文件名。您还可以像这样动态地设置完整的 filenames/paths 而不会弄乱工作目录(这在某人在 PC 上而另一个人在 mac 上时特别有用,因为斜杠的工作方式不同)。
我有一个项目文件夹,名称为 project
。结构如下所示
project
dataset
output
scripts
现在,我想从 dataset
文件夹中提取 read
文件并在 output
文件夹中提取 write
文件。我所有的代码都在 scripts
文件夹中。
我可以使用硬编码路径样式来完成,例如,
df_1 <- read.csv(~project/dataset/test.csv)
df_2 <- write.csv(~project/output/test_output.csv)
这(硬编码)导致问题。如果我 运行 来自另一个设备的代码或者如果另一个人想要 运行 在 his/her 设备中编码,那么他们需要手动更改路径。
有什么方法可以写代码,不用人手动改路径地址吗?
习惯上启动相对于访问数据的路径的脚本。
例如,您可以在您的终端中执行如下操作:
cd path/to/data
Rscript path/to/script.r
这会将工作目录设置为 path/to/data
,要在 R 中访问此数据,您现在可以简单地使用相对路径:
df_1 <- read.csv('dataset/test.csv')
write.csv(df_1, 'output/test_output.csv')
如果您不想通过终端打开 R,Sys.info()
提供了您可以在此处利用的数据。 Sys.info()["user"]
提供当前 R 用户的 ID,因此您可以像这样在文件顶部设置工作目录:
if(Sys.info()["user"] == "User 1") {
setwd("[User 1's directory]")
} else if(Sys.info()["user"] == "User 2") {
setwd("[User 2's directory]")
}
然后,一旦您将工作目录设置为跨用户的同一位置,您就可以使用相同的文件名。您还可以像这样动态地设置完整的 filenames/paths 而不会弄乱工作目录(这在某人在 PC 上而另一个人在 mac 上时特别有用,因为斜杠的工作方式不同)。