我有一个包含#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))
}
但是一种不需要两次读取文件的方法会更好。
答案 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")
适合我