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 に答える