read_excel所有列文字

时间:2015-12-18 02:28:19

标签: r excel coercion

我有一个包含#34; text"类型的所有列的Excel文件。但是,当调用read_excel时,某些列会被猜为"dbl"。我知道我可以使用col_types来指定列,但这需要我知道文件中有多少列。

有没有办法可以检测到列数?或者,或者,指定列都是"text"?像

这样的东西
read_excel("file.xlsx", col_types = "text")

非常合理地给出了一个错误,我没有为所有列指定类型。

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

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))
}

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:-3)

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")

适合我