这段代码使用旧管道
df |> group_split(group_lab) %>% set_names(map_chr(.,~.x$group_lab[1]))
但我希望它能和新管道一起工作有什么建议吗?该代码适用于新管道。
e4yzc0pl1#
新管道完全 * 不支持 * 占位符的这种用法。你可以得到的最接近的是IIFE,即:
df |> group_split(group_lab) |> {\(.) set_names(map_chr(., ~.x$group_lab[1]))}()
...不是很可读。
xsuvu9jc2#
这种操作对于管道来说并不美观,但是您可以很容易地创建一个帮助函数来清理它
set_names_with <- function(x, fn) { set_names(x, map_chr(x, fn)) }
举个例子
df <- data.frame( a= 1:10, group_lab = rep(c("A","B"), each=5) ) df |> group_split(group_lab) |> set_names_with(~.x$group_lab[1])
我们可以传递任何函数,它将接受每个子集并返回一个单一长度的字符向量名称。
2条答案
按热度按时间e4yzc0pl1#
新管道完全 * 不支持 * 占位符的这种用法。
你可以得到的最接近的是IIFE,即:
...不是很可读。
xsuvu9jc2#
这种操作对于管道来说并不美观,但是您可以很容易地创建一个帮助函数来清理它
举个例子
我们可以传递任何函数,它将接受每个子集并返回一个单一长度的字符向量名称。