R: file.path не выводит правильный подкаталог - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть каталог с именем "DIR". В этом каталоге находятся две папки, называемые «программы», которые содержат сценарии R, и «данные», которые содержат файлы .csv, которые я хочу загрузить.

Мой рабочий каталог установлен в "C: / User / DIR / Programs / processing", и я хочу загрузить файл с именем "flowers.csv" из папки "data". ( "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 голосов
/ 06 ноября 2018

Вы устанавливаете dir.root на неверный путь. setwd() не возвращает заданный вами путь, он возвращает предыдущий путь (так что вы можете вернуться к нему позже, если хотите).

Используйте этот код, чтобы делать то, что вы хотите:

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

Вы также можете позвонить normalizePath(dir.in), как сказал @chandra, но это не обязательно.

0 голосов
/ 06 ноября 2018

Используйте normalizePath для преобразования пути к файлу в каноническую форму.

dir.in <- normalizePath(file.path(dir.root, "../raw"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...