R:file.path无法输出正确的子目录

时间:2018-11-05 23:05:02

标签: r

我有一个名为“ DIR”的目录。在此目录中有两个文件夹,分别称为“程序”和“数据”,其中包含R脚本,这些文件夹包含我要加载的.csv文件。

我的工作目录设置为“ C:/ User / DIR / programs / processing”,我想从“数据”文件夹中加载一个名为“ flowers.csv”的文件。 (“ C:/User/DIR/data/flowers.csv”)。

我试图将file.path函数与"../"一起使用,以便从数据文件夹中加载数据,但是它一直为我提供错误的文件路径。

    dir.root <- setwd("C:/User/DIR/programs/processing")
    dir.in <- file.path(dir.root, "../raw")

给我

    > dir.in
    [1] "\\\\C:/User/DIR/programs/processing/../raw"

不是我想要的"\\\\C:/User/DIR/raw/"

当我使用

    read.csv("../raw/flowers.csv")

我收到一条错误消息

    Error in file(file, "rt") : cannot open the connection
    In addition: Warning message:
    In file(file, "rt") : cannot open file '../raw/flowers.csv': No such file 
    or directory

任何人都可以帮助我了解发生了什么吗?谢谢!

2 个答案:

答案 0 :(得分:0)

使用normalizePath将文件路径转换为规范格式。

dir.in <- normalizePath(file.path(dir.root, "../raw"))

答案 1 :(得分:0)

您将dir.root设置为错误的路径。 setwd()不返回您设置的路径,而是返回前一个路径(因此您可以稍后再返回)。

使用此代码执行所需的操作:

olddir <- setwd("C:/User/DIR/programs/processing")
dir.root <- getwd()
dir.in <- file.path(dir.root, "../raw")

您也可以像@chandra所说的那样呼叫normalizePath(dir.in),但这不是必需的。