2016-03-15 37 views
1

我目前在我的分析中为每个物种都有单独的脚本,我想尝试将它写入一个脚本,我可以在开始时指定哪些物种/年份的数据等。我正在分析。 我想知道是否有可能在脚本的开头部分设置某些对象,然后使用更通用的代码来读取这些文件。例如;r预先指定文件路径的一部分

现有代码

ABR <- read.csv("Y:/Pelagic Work/FIN Data/2015/HOM/Abroad.csv",sep=",",skip = 2,header=T) 
SCO <- read.csv("Y:/Pelagic Work/FIN Data/2015/HOM/Scotland.csv",sep=",",skip = 2,header=T) 

我想类似的东西;

Year <- 2015 
Species <- HOM 

ABR <- read.csv("Y:/Pelagic Work/FIN Data/Year/Species/Abroad.csv",sep=",",skip = 2,header=T) 
SCO <- read.csv("Y:/Pelagic Work/FIN Data/Year/Species/Scotland.csv",sep=",",skip = 2,header=T) 

回答

2

file.path是你正在寻找

root <- "Y:/Pelagic Work/FIN Data" 
year <- "2015" 
species <- "HOM" 

file <- "Abroad.csv" 
ABR <- file.path(root, year, species, file) 

从文档“比paste(...)更快”,并以适当的文件路径分隔符的系统

2

您可以使用sprintf本:

Year <- 2015 
Species <- HOM 

abroad.path <- sprintf("Y:/Pelagic Work/FIN Data/%s/%s/Abroad.csv", Year, Species) 
scotland.path <- sprintf("Y:/Pelagic Work/FIN Data/%s/%s/Scotland.csv", Year, Species) 

ABR <- read.csv(abroad.path, sep=",", skip=2, header=T) 
SCO <- read.csv(scotland.path, sep=",", skip=2, header=T) 
2

我定义了一个辅助函数getFileName()这确实建设要读取的文件的路径的重任。

getFileName <- function(root, year, species, file) { 
    return (paste(root, year, species, file, sep="/")) 
} 

root <- "Y:/Pelagic Work/FIN Data" 
year <- "2015" 
species <- "HOM" 
file <- "Abroad.csv" 

fileName <- getFileName(root, year, species, file, sep="/") 

ABR <- read.csv(fileName,sep=",",skip = 2,header=T) 
+0

感谢蒂姆工作的功能。我得到了错误 - 错误:“}”中的意外'}',所以我在()中加入了return –