【发布时间】:2020-11-28 23:09:46
【问题描述】:
我经常需要处理来自 Dropbox 的共享数据/代码,所有文件通常都以df <- import("../data/branch/file_name.csv") 的形式加载
但是,这永远不会加载到我的计算机上,所以我总是必须在我的完整目录中输入df <- import("C:/Users/Name/Dropbox/Folder1/Folder2/data/branch/file_name.csv")
这使得其他人难以重现代码。有什么办法可以解决这个问题,以便 R 可以正确读取“../”部分?我总是收到这个错误:错误:path 不存在:../data/branch/file_name.csv
(我以导入函数为例,但其他包或加载函数也会出现此问题)
我也尝试过使用“~/”,但问题仍然存在。不过,我使用的共享代码始终使用“../”,所以我更喜欢一个可以让它工作的解决方案,这样我就不必在每次需要使用它时更改原始脚本。
非常感谢。
编辑:尽管有下面的对话,但我仍然遇到了麻烦。我尝试设置工作目录,然后使用“../”,它有时适用于read_xls()(它在几个小时前工作,不再是,尽管做完全相同的事情并设置相同的工作目录)但不适用于rio::import() 或其他阅读功能。我什至尝试将我的工作目录设置为完全相同的文件夹并使用“./”但没有运气。错误现在显示“无法打开连接”或“没有此类文件”
【问题讨论】:
-
了解您正在使用的非基础软件包会有所帮助。我对
imports的唯一引用是backports::import(与CSV 文件无关)。不幸的是,我一直使用“../”,所以这不是通用的 R 缺点。您是否使用getwd()验证当前目录? -
即使我使用 readxl 等其他软件包也会出现此问题:
df <- read_xls("../data/file_name.xls")我每次都会遇到相同的错误。它只是将“../”读取为错误,因此我必须写出完整目录。 -
如果您使用的是 RStudio,它具有驻留在特定目录中的“项目”的概念。那不一定是包含 R 脚本文件的目录,事实上我认为这不一定是最好的项目组织。如果一个项目植根于(比如)
C:/Users/me/Projects/ABC,那么可能会有R/带有脚本,data/带有 CSV 和其他数据文件,也许output/带有渲染的 PDF。在这种情况下,可以source("R/somecode.R")和dat <- read.csv("data/somedata.csv")。 -
我的意图不是让您重复
setwd(".."),直到您到达C:/目录。这样您就可以清楚地识别 (1)"../data/file_name.xls")与 相对于 的位置(例如 R 目录或其他),以及setwd(...)与 that 目录的位置这样"../data/"将正确指向您正在引用的目录。 proj org 的一些可能有用的链接:martinctc.github.io/blog/… 和 support.rstudio.com/hc/en-us/articles/200526207-Using-Projects。 -
这不是您问题的答案,而是另一种方法:stackoverflow.com/a/59108817/2554330
标签: r directory path relative-path