R 从工作簿中的多个工作表中读取数据并删除注释

R 从工作簿中的多个工作表中读取数据并删除注释,r,rodbc,xlconnect,R,Rodbc,Xlconnect,我有几张(70多张)工作表的工作手册。每个工作表都是一个桩号名称。每个工作表都有不同数量的注释行,以#开头,我想消除它,然后在注释结束时读取标题,并将它们指定给列名。我试图使用RODBC,它可以在32位机器/R/EXCEL上工作,但不能在64位系统上工作。下面是我使用RODBC的情况。对于64位系统,如何使用XLconnect或其他方法实现同样的功能 library(RODBC) ### Connect to Excel Files # Input excel.input <- odbcC

我有几张(70多张)工作表的工作手册。每个工作表都是一个桩号名称。每个工作表都有不同数量的注释行,以#开头,我想消除它,然后在注释结束时读取标题,并将它们指定给列名。我试图使用RODBC,它可以在32位机器/R/EXCEL上工作,但不能在64位系统上工作。下面是我使用RODBC的情况。对于64位系统,如何使用XLconnect或其他方法实现同样的功能

library(RODBC)
### Connect to Excel Files
# Input
excel.input <- odbcConnectExcel2007("Diurnal Data 2013.xlsx")
# Output
excel.output <- odbcConnectExcel("Diurnal Data 2013 edit.xls", readOnly=FALSE)
### Pull and Format Data
#extract and keep Stations sheet
Stations <-sqlFetch(excel.input, "Stations", na.strings=c("","-")) 
sqlSave(excel.output,Stations,  rownames = FALSE)
##Loop through data pull and formatting for each site id
sites <- gsub("[[:punct:]]","",sqlTables(excel.input)[,"TABLE_NAME"])
len <- length(sites)
for(i in 2:len) { # Omit the 1st worksheet
sheet <- sites[i]
data <- sqlFetch(excel.input, sheet, na.strings=c("","-")) ##retrieve data from each worksheet   ith sheet
data1 <- subset(data, !grepl("^#", data[,1])) ## Removes rows starting  with #(hashtag) on ith sheet
# Rename to appropriate column headers
A <- t(data1[1,])
names(data1)<- A[,1] 
# Remove unwanted rows
data2 <- data1[c(-1,-2),]
head(data2)
# Write new ith worksheet into output file.
sqlSave(excel.output,data2, tablename=sheet, rownames = FALSE)
# End loop after running through all sheets.
}
###Close connections to Excel files before opening
odbcCloseAll()
库(RODBC)
###连接到Excel文件
#输入

excel.input我无法使用XLConnect加载工作簿,因为工作簿太大(>31 MB)。获取错误“error:OutOfMemoryError(Java):超出GC开销限制”您是否为相同的体系结构使用R和Office版本?(即64位R和64位Excel)。当为不同于R中使用的体系结构使用驱动程序时,RODBC失败。您应该发布准确的错误消息和有关版本的更好信息
sessionInfo()
应该包括输出。虽然odbcConnectExcel在我的64位Windows计算机上无法工作,但我必须重新安装64位MS Office并为Office文件安装64位ODBC驱动程序()。这使操作系统和Office保持一致,并且大部分脚本都工作正常。谢谢Oscar。你的建议帮我弄明白了。