保存由R中的file.choose()导入的文件路径

时间:2014-11-29 17:06:16

标签: r

我正在寻找一种方法来保存使用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)}

我想拥有&#34; FILE PATH&#34;与原始csv文件所在的位置相同。由于file.choose()的机制,我无法找到一种方法来保存函数中对象的文件路径,并将其用于&#34; FILE PATH&#34;。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:5)

{dirname}中的两个函数file.pathbase在这种情况下可能会有所帮助。

> 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),但是,您可以使用sep中的file.path参数定制它独立于平台工作。


如果您需要多次访问该用户所选目录中的多个文件,则每次重建绝对路径将非常繁琐。您只需将工作目录设置为用户选择文件夹,您就可以只读取或写入文件名。

> 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