R通过列名读取excel

时间:2017-08-15 15:05:01

标签: r excel readxl

所以我有一堆我想要循环的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,因为它会混淆其中一些(例如对于字符串列,如果第一个值以数字开头,它会尝试解释整个列作为数字和崩溃)。所以我的问题是:如何指定要读取的特定不连续列? range参数使用cell_ranger包,不允许读取不连续列。那么还有其他选择吗?

1 个答案:

答案 0 :(得分:4)

.xlsx&gt;&gt;&gt;使用库openxlsx

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

如果至少有一列包含字符,它似乎会将所有列读为字符。

openxlsx::read.xlsx("test.xlsx", cols = c(2,3,6))

.xls&gt;&gt;&gt;使用库XLConnect

对于.xls文件,请参阅XLConnect包。想到,在某些系统上安装rJava可能会很棘手。 keep的{​​{1}}和drop参数同时接受列名和索引。参数readWorksheet()处理列类型。这对我有用:

colTypes