read_excel所有列文本

我有一个types为“文本”的所有列的Excel文件。 但是,当read_excel时,有些列被认为是"dbl" 。 我知道我可以使用col_types来指定列,但这需要我知道有多less列在我的文件。

有没有一种方法可以检测列的数量? 或者,或者,指定列都是"text" ? 就像是

 read_excel("file.xlsx", col_types = "text") 

这相当合理地给出了一个错误,我没有指定所有列的types。

目前,我可以通过两次在文件中读取来解决这个问题:

 read_excel_one_type <- function(filename, col_type = "text"){ temp <- read_excel(path = filename) ncol.temp <- ncol(temp) read_excel(path = filename, col_types = rep(col_type, ncol.temp)) } 

但是不需要两次读取文件的方法会更好。

这个答案似乎是有帮助的: https : //stackoverflow.com/a/34015430/5220858 。 我发现excel文件需要从头开始正确格式化,以便R自动检测正确的数据types(即数字,date,文本)。 我认为这个post与你的问题更相关。 海报显示了一些类似于你所提供的代码,除了只有一行数据被读取以确定列的数量,其余的是根据第一行读入R.

 library("xlsx") file<-"myfile.xlsx" sheetIndex<-1 mydf<-read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL, startRow=NULL, endRow=NULL, colIndex=NULL, as.data.frame=TRUE, header=TRUE, colClasses=NA, keepFormulas=FALSE, encoding="unknown") 

为我工作