gpt4 book ai didi

R:使用管道 %>% 和占位符进一步子集选择

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

我最近发现了管道运算符 %>% ,这可以使代码更具可读性。这是我的MWE .

library(dplyr)                                          # for the pipe operator
library(lsr) # for the cohensD function

set.seed(4) # make it reproducible
dat <- data.frame( # create data frame
subj = c(1:6),
pre = sample(1:6, replace = TRUE),
post = sample(1:6, replace = TRUE)
)

dat %>% select(pre, post) %>% sapply(., mean) # works as expected

但是,在这种特殊情况下,我很难使用管道运算符
dat %>% select(pre, post) %>% cohensD(.$pre, .$post)    # piping returns an error
cohensD(dat$pre, dat$post) # classical way works fine

为什么不能使用占位符 . 对列进行子集化结合 $ ?使用管道运算符 %>% 编写此行是否值得? ,或者它是否使语法复杂化?写这个的经典方式似乎更简洁。

最佳答案

这会起作用:

dat %>% select(pre, post) %>% {cohensD(.$pre, .$post)}

将最后一次调用包装到花括号中使其被视为表达式而不是函数调用。当您将某些内容通过管道传递到表达式中时, .按预期被替换。我经常使用这个技巧来调用一个不能很好地与管道接口(interface)的函数。

大括号内的内容恰好是函数调用,但实际上可能是 . 的任何表达式.

关于R:使用管道 %>% 和占位符进一步子集选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474882/

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