readxl包,XLConnect包
实例:一批实验包含248个样品,检测样品,得到t1-5.xlsx,t1-6.xlsx,t1-7.xlsx........等共248个表格,每个excel文件中包含一个样品的结果,其中还有部分仪器和参数信息。需要从每个文件中提取实验数据。可以用R对excel进行批处理。代码如下:
library(readxl)
library("XLConnect")
path <- "e:/222" 
filenames <- dir(path)  
filepath <- sapply(filenames,function(x){paste(path,x,sep='/')})   
data <- lapply(filepath,function(x){readWorksheetFromFile(x,sheet=1)})  
思路:用function()函数将文件定义为变量x,再使用apply()函数家族(代替for循环)历遍读取目录下所有文件。
代码详解:
path <- "e:/222"  
#定义目录路径。要处理的excel全在e:/222目录下
filenames <- dir(path)  
#定义文件名为路径下的所有目录名。即获取了该路径下的所有文件名
 
filepath <- sapply(filenames,function(x){paste(path,x,sep='/')}) 
#定义文件路径。paste()函数连接字符串,即path+x,用/分隔,即 e:/222/x
 
data <- lapply(filepath,function(x){readWorksheetFromFile(x,sheet=1)}) 
#按定义的路径历遍读取所有文件。
write.csv(data,file="e:/all.scv")
#把读取的248个文件内容拼接成一个csv文件,保存在e盘
直接在excel中提取需要的字段,或者把拼接的csv文件导入access数据库,用sql语句进行查询和显示。