gpt4 book ai didi

r - 如何将函数应用于 dplyr 链中的整个表

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

我有一个 dplyr 链如下

myResults <- rawData %>% filter(stuff) %>% mutate(stuff)

现在我想应用一个函数 myFuncmyResults .有没有办法在链中做到这一点,或者我基本上需要这样做:
myResults <- myFunc(myResult)

最佳答案

如果函数将数据框作为第一个参数,您可以在最后简单地添加它。

> myFunc <- function(x) sapply(x, max)
> mtcars %>% filter(mpg > 20) %>% myFunc()
mpg cyl disp hp drat wt qsec vs am gear
33.900 6.000 258.000 113.000 4.930 3.215 22.900 1.000 1.000 5.000
carb
4.000

值得一提的是 magrittr::%>%dplyr 使用适用于任何参数,因此您可以轻松地执行以下操作:
> inc <- function(x) x + 1
> 1 %>% inc(.) %>% sqrt(.) %>% log(.)
[1] 0.3465736

还有一些有用的 magrittr别名:
library(magrittr)
set.seed(1)
inTrain <- sample(1:nrow(mtcars), 20)
mtcarsTest <- mtcars %>% extract(-inTrain, )

summaryPipe <- function(x) {print(summary(x)); x}

mtcars %>%
extract(inTrain, ) %>%
# Train lm
lm(mpg ~ ., .) %>%
# Print summary and forward lm results
summaryPipe %>%
# Predict on the test set
predict(newdata = mtcarsTest) %>%
# Print results and forward arguments
print %>%
# Compute RMSE
subtract(mtcarsTest %>% extract2('mpg')) %>%
raise_to_power(2) %>%
mean %>%
sqrt

这可能是一个品味问题,但我个人觉得它相当有用。

正如@BondedDust 在评论中提到的,将函数传递给 %>% 有三种可能的方式。 .使用点占位符,您可以在不同于第一个位置的位置使用 LHS(参见 lm 调用)。

关于r - 如何将函数应用于 dplyr 链中的整个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948947/

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