gpt4 book ai didi

r - XLConnect 包和 xlsx

转载 作者:行者123 更新时间:2023-12-03 02:28:25 32 4
gpt4 key购买 nike

我想将所有 Excel 工作表读入 R 列表 df。我使用的代码是:

file <- file.choose()
name <- basename(file)
require(XLConnect)
wb <- XLConnect :: loadWorkbook(name)
lst <- readWorksheet(wb, sheet = getSheets(wb))

但是,之后我需要使用包“xlsx”。如果我返回使用上面的代码来读取文件,我会在 lst <- readWorksheet(wb, sheet = getSheets(wb)) 之后收到错误消息:

Error in wb$getNumberOfSheets : Method undefined for class 'workbook'

顺便说一句,如果我使用 wb <- loadWorkbook(name) ,我收到错误消息

Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘readWorksheet’ for signature ‘"jobjRef", "list"’

任何方法都可以使两个包一起工作,或者其他方法将具有多个工作表的 excel 文件读取到 df 列表?非常感谢!

最佳答案

这里的主要问题是您似乎加载了两个具有相同函数名称的包。 xlsxXLConnect 都提供了 loadWorkbookgetSheets 函数。这就是你大部分错误的根源。因此,您将调用 loadWorkbookgetSheets 并向它们提供这些函数不需要的对象类型的参数。

您最好只使用其中一个来获取所需的 data.frames 列表。我建议暂时坚持使用 XLConnect,直到您需要 xlsx 包中的特定内容为止。

以下是您尝试在上面运行的代码的调整版本:

require(XLConnect)


file_name <- file.choose()
base_name <- basename(file_name)

wb <- XLConnect::loadWorkbook(base_name)
lst <- XLConnect::readWorksheet(wb, sheet=XLConnect::getSheets(wb))

列表 lst 应包含与工作簿内工作表中的数据相匹配的 data.frames。

如果您希望将 data.frames 列表保存在新的 Excel 工作簿中,可以使用 writeWorksheet 函数。您需要首先打开工作簿或创建它(如果它尚不存在)。然后,您创建数据将存放的工作表名称。此时,您可以将数据框添加到其相应的工作表中。完成后,您可以保存工作簿。

new_wb = loadWorkbook('aaa.xlsx', create=TRUE)
createSheet(new_wb, names(lst))
writeWorksheet(new_wb, data=lst, sheet=names(lst))
saveWorkbook(new_wb)

我希望这会有所帮助。

关于r - XLConnect 包和 xlsx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45819465/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com