当在r中下载或保存文件时,我无法使R创建目录

时间:2016-11-15 20:36:39

标签: r windows

每当我想要将某些内容下载到文件夹时,我必须先手动创建该文件夹。 例如: download.file("https://ndownloader.figshare.com/files/2292169", "data2/portal_data_joined.csv")

会给我一个错误

cannot open destfile 'data2/portal_data_joined.csv', reason 'No such file or directory'

我的解决方案是手动创建文件夹data2然后它可以工作。 我的问题是:为什么R没有权利创建文件夹?

3 个答案:

答案 0 :(得分:2)

首先使用dir.create创建目录:)

答案 1 :(得分:1)

R有权利,但它选择不这样做。当R创建文件时,似乎不常创建文件夹是相当普遍的做法:

> write.table(x,file="./foo/bar/baz.csv")
Error in file(file, ifelse(append, "a", "w")) : 
  cannot open the connection
In addition: Warning message:
In file(file, ifelse(append, "a", "w")) :
  cannot open file './foo/bar/baz.csv': No such file or directory

一个简洁的解决方案是创建一个名为makepath的函数,它在任何深度创建文件夹并返回路径:

> makepath = function(path){dir.create(dirname(path),recursive=TRUE);path}

然后你可以这样做:

> write.table(x,file=makepath("./foo/bar/baz.csv"))
> write.table(x,file=makepath("./foo/bar/qux/moo/baz.csv"))

同样适用于您的download.file

答案 2 :(得分:0)

正如Rich Scriven所说:

download.file不会为您创建destfile。您必须先创建它,然后才能下载它。其他一些函数创建文件,但不是download.file

菲利普杰拉德说: 要使用dir.create("folder")

从R创建目录