【问题标题】:How to align two named lists of tibbles and insert them into excel worksheets?如何对齐两个命名的小标题列表并将它们插入到 Excel 工作表中?
【发布时间】:2018-09-21 21:01:30
【问题描述】:

我想对齐数据框列表以将它们插入到自己的 Excel 工作簿中。下面是示例代码。

library(tidyverse)
library(XLConnect)


a <- tibble(x = 1:10, y = 11:20, z = 21:30)
b <- tibble(x = 1:10, y = 11:20, z = 21:30)
c <- tibble(x = 1:10, y = 11:20, z = 21:30)

ldf_abc <- list(a,b,c)
names(ldf_abc) <- c("a", "b", "c")

c <- tibble(n = 1:10, o = 11:20, p = 21:30)
a <- tibble(n = 1:10, o = 11:20, p = 21:30)
b <- tibble(n = 1:10, o = 11:20, p = 21:30)

ldf_cab <- list(c,a,b)
names(ldf_cab) <- c("c", "a", "b")

在本例中,我想将ldf_cabldf_abc 对齐。

之后,我想将ldf_cabldf_abc 中的值放在他们自己的excel 文件中。 (例如,a.xls 在表 1 中包含变量 n o p,在表 2 中包含变量 x y z。下面是我的尝试(我没有走得太远)

my_order <- c("a.xlsx", "b.xlsx", "c.xlsx")
my_wb_l <- lapply(my_order, function(x) loadWorkbook(filename = paste0("~/Desktop/", x), create = TRUE))

从这个块我得到这个错误。

 Error: NoSuchMethodError (Java): org.apache.poi.ss.usermodel.FillPatternType.getCode()S

我将如何解决这个问题。

【问题讨论】:

    标签: r excel sorting xlconnect


    【解决方案1】:

    试试

    library(purrr)
    walk(c("a", "b", "c"), function(x) {
      wb <- loadWorkbook(filename = paste0("~/Desktop/", x,".xlsx"), create = TRUE)
      createSheet(wb, "ldf_cab")
      createSheet(wb, "ldf_abc")
      writeWorksheet(wb, ldf_cab[[x]], sheet = 1)
      writeWorksheet(wb, ldf_abc[[x]], sheet = 2)
      saveWorkbook(wb)
    })
    

    顺便说一句,如果XLConnect 给您带来问题,您可以尝试使用openxlsx。我有更好的运气让它发挥作用。一个解决方案是

    library(openxlsx)
    walk(c("a", "b", "c"), function(x) {
      temporary_list <- list(
        ldf_cab[[x]],
        ldf_abc[[x]]
      )
      write.xlsx(temporary_list, file = paste0("~/Desktop/",x,".xlsx"))
    })
    

    【讨论】:

    • 感谢您的提示。 openxlsx 解决方案有效!我不确定rJavaR的兼容性情况如何。
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多