在R中导入一个ODS文件的所有工作表,保持工作表的名称 [英] Importing all sheet of a ODS file in R keeping the name of the sheets

查看:8
本文介绍了在R中导入一个ODS文件的所有工作表,保持工作表的名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有此LibreOffice Calc(.ods)文件(download)。

我要导入此文档的所有工作表。在导入过程中,我将创建一个列表,其中列表的每个元素都是一个工作表。我希望列表元素的名称在ods文件中保留工作表的原始名称。

我创建了此代码:

  library(readODS)
  library(dplyr)
  library(purrr)
  library(tidyr)

  path <- "example.ods"

  mylist <- path %>%
    ods_sheets() %>%
    set_names() %>%
    map(read_ods, skip = 1, path = path)

通过运行此代码,我得到set_names()函数的错误:

Error in set_names(.) : 1 argument passed to 'names<-' which requires 2

如何求解才能创建包含名为原始工作表的元素的列表?

推荐答案

因为我不愿从Google Drive下载随机文件,所以我为此设置了我自己的示例ods文件,其中包含两个表"foo"和"bar",如下所示:

foo

a b
1 2
3 4

bar

a b
7 6
5 4

所以,您的代码有一些问题。您的第一个错误是set_names()需要两个参数。这里的另一个问题是您没有为map()同时指定.x.f。我们可以使用如下所示的中间赋值步骤来解决这些问题:

library(readODS)
library(dplyr)
library(purrr)
library(tidyr)

path <- "test.ods"

sheets <- ods_sheets(path)
mylist <- map(seq_along(sheets), read_ods, path = path) %>%
    set_names(sheets)
mylist

$foo
  a b
1 1 2
2 3 4

$bar
  a b
1 7 6
2 5 4

这篇关于在R中导入一个ODS文件的所有工作表,保持工作表的名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆