R错误:readColumns ...:尝试在xlsx包中应用非函数

时间:2016-10-19 23:58:00

标签: r excel xlsx

我想读取所有文件并将excel文件中的多张表加载到R,使用xlsx包。
我粘贴了下面的代码:

filelist <- list.files(pattern = "\\.xls") # list all the xlsx files
library(xlsx)
allxlsx.files <- list()  # create a list to populate with xlsx data 

for (file in filelist) {

         wb <- loadWorkbook(file)
         sheets <- getSheets(wb)
         sheet <- sheets[['_']] # get sheets with field section reading
         res <- readColumns(sheet, 1, 2, 114, 120, colClasses=c("character", "numeric"))
}
  

回溯()   1:readColumns(sheet,1,2,114,120,colClasses = c(“character”,          “数字”))#6

有人可以告诉我如何继续吗?

1 个答案:

答案 0 :(得分:0)

我认为你错误地对纸张进行了分组。 您可以在工作表名称上使用grep,以使用"_"获取所有文件名。

我创建并使用了一个xlsx文件,其中包含5张带有下面名称的假设数据,用于演示。

> names(sheets)
[1] "Sheet_1" "Sheet2"  "Sheet_3" "Sheet4"  "sheet_4"

可以使用

获取所需的工作表
sheet = sheets[grep("_",names(sheets))]

您可以使用

进行检查
> names(sheet)
[1] "Sheet_1" "Sheet_3" "sheet_4"

所以你的最终代码将如下所示

filelist <-  "sheeetLoadTrial1.xlsx" # single xlsx files
library(xlsx)
allxlsx.sheets <- list()  # create a list to populate with xlsx sheet data 

for (file in filelist) {

        wb <- loadWorkbook(file)
        sheets <- getSheets(wb)
        sheet = sheets[grep("_",names(sheets))]
        for(i in c(1:length(sheet))){
                res <- readColumns(sheet[[i]], 1, 2,1,8,header = F)
                allxlsx.sheets[[i]] = res
        }
        names(allxlsx.sheets) <- names(sheet)
}

在此之后,您的最终所需列表将是

> allxlsx.sheets
$Sheet_1
  X1 X2
1  1  2
2  2  3
3  2  4
4  2  5
5  2  6
6  2  7
7  2  8
8  2  9

$Sheet_3
  X1 X2
1  1  2
2  2  3
3  2  4
4  2  5
5  2  6
6  2  7
7  2  8
8  2  9

$sheet_4
  X1 X2
1  1  2
2  2  3
3  2  4
4  2  5
5  2  6
6  2  7
7  2  8
8  2  9

对于多个文件,您只需将allxlsx.sheets附加到allxlsx.files列表即可。