2

我正在使用 readxl 包读取 R 中的 excel 文件,如下所示:

library(readxl)
file_names <- list.files(pattern = ".xlsx")

list_collection <- list() 
for(i in 1:length(file_names)){
  frame <- read_excel(file_names[i], )
  frame_sub <- frame[1:100,]
  list_collection[i] <- list(frame_sub)  
}

由于有很多excel文件,我只想要前100行。显然这不是有效的。有没有办法最初从 excel 中读取 100 行,而不是读取整个文件然后子集?

4

2 回答 2

3

试试xlsx::read.xlsx()吧。它具有用于指定开始行和结束行的参数。另请注意,我对您的for()循环进行了一些改进(内存分配是最重要的)。

library(xlsx)
## get file names
file_names <- list.files(pattern = "\\.xlsx$")
## allocate memory for our list
out <- vector("list", length(file_names)) 
## read the files and assign them to the list
for(i in seq_along(file_names)) {
    out[[i]] <- read.xlsx(file_names[i], startRow = 1, endRow = 100)  
}

或者您可以通过将for()循环更改为

for(file in file_names) {
    out[[file]] <- read.xlsx(file, startRow = 1, endRow = 100)  
}
于 2016-04-07T23:27:45.280 回答
3

在搜索相同的东西时遇到了这个 - 这已添加到最新readxl更新中。要获得工作表中的前 100 行,您可以这样做

library(readxl)
file_names <- list.files(pattern = ".xlsx")

list_collection <- list() 
for(i in 1:length(file_names)){
  frame <- read_excel(file_names[i], n_max = 100)
  list_collection[i] <- list(frame)  
}

或者您可以使用类似的东西指定特定的行

frame <- read_excel(file_names[i], range = cell_rows(1:100))
于 2017-05-15T20:27:57.493 回答