【问题标题】:Saving file path imported by file.choose () in R在R中保存file.choose()导入的文件路径
【发布时间】:2014-11-29 17:06:15
【问题描述】:

我正在寻找一种方法来保存使用 file.choose() 导入 R 的文件的文件路径。假设我有一个导入 csv 文件并将前 N 列保存在与原始文件相同目录的新文件中的函数。像这样:

Split<-function(N,...){

data<-read.csv(file.choose(),header=T)

write.csv(data[,1:N],paste("FILE PATH","newdata.csv"),row.names=F)}

我希望“文件路径”与原始 csv 文件所在的位置相同。由于 file.choose() 的机制,我找不到将文件路径保存在函数内的对象中并将其用于“文件路径”的方法。

有什么想法吗?

谢谢。

【问题讨论】:

  • 您可能需要list.files()file.choose() 更适合交互使用。
  • @RichardScriven 旨在使用户能够以交互方式选择文件,但该功能也应该将输出保存在同一目录中。那么,list.files() 有什么帮助呢?

标签: r


【解决方案1】:

来自 {base} 的两个函数 dirnamefile.path 在这种情况下可能会有所帮助。

> file_user <- file.choose()
> file_user
[1] "C:\\Users\\ohyeah\\Desktop\\chinese.txt"
> path_user <- dirname(file_user)
> path_user
[1] "C:/Users/ohyeahg/Desktop"
> newfilename <- "myresult.csv"
> newfilepath <- file.path(path_user, newfilename)
> newfilepath
[1] "C:/Users/ohyeah/Desktop/myresult.csv"
> write.csv(iris, newfilepath)
>
# there is a new file 'myresult.csv' created in the same folder
# and it contains the iris dataset.

如您所见,文件分隔符已从\\(windows) 更改为/(linux),但是,您可以使用file.path 中的sep 参数来自定义它,它独立于平台。


如果您可能需要多次访问该用户选择的目录中的多个文件,则每次都重建绝对路径会很繁琐。您可以简单地将工作目录设置为用户选择文件夹,并且您只能使用文件名读取或写入。

> setwd(path_user)
> newfilename <- "myresult_new.csv"
> write.csv(iris, newfilename)
> head(read.csv(newfilename))
X Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 1          5.1         3.5          1.4         0.2  setosa
2 2          4.9         3.0          1.4         0.2  setosa
3 3          4.7         3.2          1.3         0.2  setosa
4 4          4.6         3.1          1.5         0.2  setosa
5 5          5.0         3.6          1.4         0.2  setosa
6 6          5.4         3.9          1.7         0.4  setosa

【讨论】:

  • 太棒了。这就是我要找的东西。谢谢。
  • @Amin,根据您的用例,您可能需要考虑将工作目录更改为用户选择的目录。在这种情况下,您可以省略文件路径,只需将文件名分配给读/写。如果您需要多次读取或写入,并且每次都重建绝对文件路径有点繁琐,这将很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
相关资源
最近更新 更多