在R中读取excel文件:参数意味着不同的行数

时间:2017-11-01 20:32:43

标签: r excel

我正在尝试读取R中的Excel文件。我手动制作了这样的文件。

A B C

1 2 3

3 1 2

我正在使用这个给我错误的代码

  

参数意味着不同的行数:2,1,0

my_data <- read.xlsx('file.xlsx', sheetName='data', startRow=1,colNames=FALSE,
           rowNames=TRUE,rows=NULL,cols=NULL,na.strings="NA")
你能指导一下我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

当您通过rows = NULLcols = NULLread.xlsx()时,会发生错误。 read.xlsx将参数传递给data.frame(),您可以通过将其定义为NULL来删除列和行。

在这里:

> myData <- read.xlsx("file.xlsx", sheetName='data', startRow = 1, colNames = F, rowNames = T, rows = NULL, cols = NULL, na.strings = "NA")
Error in data.frame(res, ...) : 
  arguments imply differing number of rows: 2, 1, 0

我们可以通过删除rows = NULLcols = NULL

来解决此问题
> myData <- read.xlsx("file.xlsx", sheetName='data', startRow = 1, colNames = F, rowNames = T, na.strings = "NA")
> myData
  A B C colNames rowNames na.strings
1 1 2 3    FALSE     TRUE         NA
2 3 1 2    FALSE     TRUE         NA

注意:colNamesrowNamesna.strings被解释为要传递给结果data.frame()的变量,因为它们不是read.xlsx()的参数

作为正在发生的事情的证明,你可以在这里看到:

> data.frame(1:3,1:3, rows = NULL)
Error in data.frame(1:3, 1:3, rows = NULL) : 
  arguments imply differing number of rows: 3, 0

与:相比:

> data.frame(1:3,1:3)
  X1.3 X1.3.1
1    1      1
2    2      2
3    3      3

TL; DR?从您对rows = NULL的电话中删除cols = NULLread.xlsx()

答案 1 :(得分:0)

请参阅thisthis并注意xlsx::read.xlsx个参数。 然后,考虑这段代码

#use header instead of colNames
#use row.names instead of rowNames
#no na.strings argument in xlsx::read.xlsx (but openxlsx::read.xlsx use na.strings)
my_data <- xlsx::read.xlsx("file.xlsx", sheetName = "data", startRow = 1,
                           header = TRUE, row.names = NULL)