我还有一个令人费解的问题。
我需要用rodbc读取.xls文件。基本上,我需要一张表格中所有单元格的矩阵,然后使用greps和strsplits等来获取数据。由于每个工作表包含多个不同顺序的表,以及一些文本字段和中间的其他选项,所以我需要一些类似的功能
readLines()
,但对于Excel工作表。我相信罗德比是最好的方法。
我的代码的核心是以下函数:
.read.info.default <- function(file,sheet){
fc <- odbcConnectExcel(file) # file connection
tryCatch({
x <- sqlFetch(fc,
sqtable=sheet,
as.is=TRUE,
colnames=FALSE,
rownames=FALSE
)
},
error = function(e) {stop(e)},
finally=close(fc)
)
return(x)
}
然而,无论我做了什么尝试,它总是将上述工作表的第一行作为返回数据帧的变量名。不知道怎么解决这个问题。根据文件,
colnames=FALSE
应该防止这种情况发生。
我想避免
xlsReadWrite
包裹。编辑:和
gdata
包裹。客户机在系统上没有Perl,因此不会安装它。
编辑:
我放弃了,跟着走了
read.xls()
从
xssRead Read
包裹。除了名字的问题,原来rodbc不能真正读取带有特殊符号(如斜线)的单元格。格式为“dd/mm/yyyy”的日期刚刚给出了na。
通过查看sqlfetch、sqlquery和sqlgetresults的源代码,我意识到这个问题在驱动程序中出现的可能性更大。不知何故,工作表的第一行被视为某个列特征,而不是普通单元格。因此,它们不是colname,而是相当于db字段名。这是一个你不能设置的选项…