【发布时间】:2020-07-06 16:25:33
【问题描述】:
我将列表中的多个数据框导出到一个 excel 文件中的不同工作表中,我可以使用以下代码执行此操作(以 mtcars 为例):
library(tidyverse)
library(ImportExport)
data_list <- split(mtcars, mtcars$cyl)
table_name <- names(data_list)
# Run
excel_export(data_list, "foo.xlsx", table_names = tab_name)
然后,我想用另一种方式做到这一点,因为我看到 dplyr 文档说:
.y引用键,一个一行 tibble,每列一列 标识组的分组变量。
所以我认为.y 等于我创建的变量table_name,我这样做:
data_list %>% excel_export("foo.xlsx", table_names = .y)
然后我得到一个错误:
.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", : 找不到对象 '.y'
有人可以解释为什么以及如何使用.y 来做到这一点。
我们将不胜感激。
【问题讨论】:
-
您在文档中的何处找到该引文?我认为你应该使用
data_list %>% excel_export("foo.xlsx", table_names = tab_name) -
嗨@RonakShah,我认识你。几天前你在my another question 上回复我。您提供的代码
purrr::imap(df1, ~dplyr::mutate(.x, from = .y))对我很有帮助。我不知道.x和.y到底是什么意思,然后我分别用.x和.y作为关键字搜索了dplyr 文档。我在group_map函数中描述的第 38 页上找到了一些关于它们的信息。所以我模仿你之前的代码包含.y来解决这个问题。 -
.x和.y是要在要调用的表达式中使用的 占位符。想象在group_walk下面是这样的:for (.y in names(thedata)) { .x <- thedata[[.y]]; expr; },您提供的expression 会将.x和.y变量视为对象。