该dplyr软件包引入了%.%操作符,将左侧作为右侧函数的参数传递,类似于*NIX管道.该magrittr软件包是一个更轻量级的软件包,仅用于定义类似管道的操作员.
然而一个人使用%.%另一个人%>%.
这两者有什么区别吗?我%>%可以在dplyr代码中使用甚至是否会导致细微的错误?
在检查代码时,它们在早期就采用了截然不同的路径,因此简单的眼球比较表明它们是不同的.当我在网上搜索它时,我无法找到任何记录,也没有在文档本身中遇到任何问题.
管道和tidyverse有时非常方便.用户想要将一列从一种类型转换为另一种类型.
像这样:
mtcars$qsec <-as.integer(mtcars$qsec)
Run Code Online (Sandbox Code Playgroud)
这需要输入我需要的两倍.请不要建议使用"with"命令,因为我觉得它使用起来很混乱.
什么是tidyverse和magrittr%<>%的方式以最少的打字量做同样的事情?另外,如果qsec是第6列,我该怎么做才引用列位置.像(不正确的代码)
mtcars %<>% mutate(as.integer,qsec)
mtcars %<>% mutate(as.integer,[[6]])
Run Code Online (Sandbox Code Playgroud) 我正在运行并行计算,用于foreach同时处理大量时间序列。在这些计算中(在一个名为我的函数中,compute_slope()我做了这样的事情
lBd <- floor(TMax^delta) # lower bound\nuBd <- ceiling(m * TMax^delta) # upper bound\n \n# process is a tibble with columns `n` and `variance`\nprocess %>% \n dplyr::filter(between(n, lBd, uBd)) %>% \n lm(data = ., log(variance) ~ log(n)) %>% \n coefficients() %>% \n .[2]\nRun Code Online (Sandbox Code Playgroud)\n所以,这是非常简单的事情:使用参数TMax, delta我m在左侧和右侧截断时间序列(使用filter()),然后对截断的时间序列运行线性回归。\n出于某种奇怪的原因,大多数时候一切都很顺利,但有时(我怀疑在较长的时间序列中更有可能发生错误,即TMax较大,但这也有点不规则)我得到
\xe2\x9c\x96 Problem with `filter()` input `..1`.\n\xe2\x84\xb9 Input `..1` is `between(n, lBd, uBd)`.\n\xe2\x9c\x96 `ancestor` must be an environment"\nRun Code Online (Sandbox Code Playgroud)\n我真的不知道如何解释这个错误。我也很难复制这个“祖先”错误,但到目前为止还没有运气。例如,我尝试过 …