我正在尝试读取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")
你能指导一下我做错了什么吗?
答案 0 :(得分:0)
当您通过rows = NULL
或cols = NULL
到read.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 = NULL
和cols = 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
注意:colNames
,rowNames
和na.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 = NULL
和read.xlsx()
。
答案 1 :(得分:0)
请参阅this和this并注意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)