gpt4 book ai didi

r - 从 %>% 管道运算符获取倒数第二个输入

转载 作者:行者123 更新时间:2023-12-04 09:07:17 25 4
gpt4 key购买 nike

我想从我刚刚创建的列中提取一个因子 一个管道。
我可以使用以下代码执行此操作:

library("dplyr")
library("magrittr")
library("janitor")

iris <- iris %>% janitor::clean_names()
iris %>% filter(species %in% c("setosa","versicolor")) %>% group_by(species) %>%
summarise(mean_sepal_length = mean(sepal_length)) %>% ungroup() %>%
mutate(species = factor(species, levels = (iris %>% group_by(species) %>% #<- works but messy
summarise(mean_sepal_length = mean(sepal_width)) %>%
ungroup() %>% arrange(mean_sepal_length) %$% species))) %>%
arrange(species)
我想知道是否有“更清洁”的方法来做到这一点。就像是:
iris %>% filter(species %in% c("setosa","versicolor")) %>% group_by(species) %>% 
summarise(mean_sepal_length = mean(sepal_length)) %>% ungroup() %>%
mutate(species = factor(species, levels = (. %>% arrange(mean_sepal_length) %$% species))) %>%
arrange(species)
哪里 .倒数第二个参数 而不是给管道的最后一个参数?
这会引发错误,因为管道的最后一个参数是 mutate 语句:
Error: Problem with `mutate()` input `species`. x 'match' requires vector arguments i Input `species` is `factor(...)`.
我认为这根本不是管道运算符(operator)的工作方式,所以这可能是不可能的。

最佳答案

为了让第二个选项起作用,我们可以包装 .{}

library(dplyr)
library(magrittr)
iris %>%
filter(species %in% c("setosa","versicolor")) %>%
group_by(species) %>%
summarise(mean_sepal_length = mean(sepal_length)) %>%
ungroup() %>%
mutate(species = factor(species,
levels = ({.} %>%
arrange(mean_sepal_length) %$% species))) %>%
arrange(species)
# A tibble: 2 x 2
# species mean_sepal_length
# <fct> <dbl>
#1 setosa 5.01
#2 versicolor 5.94

关于r - 从 %>% 管道运算符获取倒数第二个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63419922/

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