R按列名读取excel

所以我有一堆excel文件,我想循环读取特定的,不连续的列到数据框中。 使用readxl工作的基本的东西是这样的:

 library(readxl) library(plyr) wb <- list.files(pattern = "*.xls") dflist <- list() for (i in wb){ dflist[[i]] <- data.frame(read_excel(i, sheet = "SheetName", skip=3, col_names = TRUE)) } # now put them into a data frame data <- ldply(dflist, data.frame, .id = NULL) 

这工作(勉强),但问题是我的Excel文件有大约114列,我只想要特定的。 另外,我不想让R猜测col_types因为它会col_types其中的一些(例如,对于string列,如果第一个值以数字开始,它会尝试将整列解释为数字,并崩溃)。 所以我的问题是:如何指定特定的,不连续的列读取? range参数使用不允许读取不连续列的cell_ranger软件包。 那么还有其他什么

openxlsx软件包中的read.xlsx函数具有一个参数cols ,它带有一个数字索引,用于指定要读取的列。

如果至less有一列是字符,它似乎将所有列读作字符。

编辑:对于.xls文件,请参阅XLConnect包。 想到安装rJava可能会很棘手。 readWorksheet()keepdrop参数也接受列名称。 参数colTypes处理列types。 这样它适用于我:

 options(java.home = "C:\\Program Files\\Java\\jdk1.8.0_74\\") library(rJava) library(XLConnect) workbook <- loadWorkbook("test.xls") readWorksheet(workbook, sheet = "Sheet0", keep = c(1,2,5))