我是R的新手,正在研究read_excel()和excel_sheets()是如何工作的,试图在下面使用两个这样的代码。这些是为了阅读excel文件的第二张。
output <- read_excel(excel_sheets("population.xlsx")[2],
path = "population.xlsx")
output <- read_excel(excel_sheets("population.xlsx"),
sheet = 2, path = "population.xlsx")
第一个代码成功运行,但第二个代码没有错误
Error: length(x) == 1L is not TRUE
我想知道它发生的原因以及我如何解决它。
read_excel的文档说它可以使用'sheet'参数来选择要读取的工作表,我猜这与说明字符向量的顺序编号相同(即在这种情况下为excel_sheets("population.xlsx")[2]
)。
只是read_excel(path = "population.xlsx", sheet = 2)
应该工作。您的第一个代码是获取所有工作表的列表,然后选择第二个的名称; read_excel
接受整数位置和工作表名称作为sheet
的参数。
你可能会感到困惑,因为你需要了解一些关于argument matching的事情;命名参数匹配,然后从左到右匹配。所以在第一个例子中,指定了path
,然后将excel_sheets
调用传递给sheet
参数。在第二个中,你指定sheet
,所以我认为它将传递给range
参数,该参数应该只接受长度为1的字符向量。这就是你所遇到的错误的根源。