2017-04-26 68 views
3

我正在尝试切换到“新”tidyverse ecosystem并尽量避免从Wickham 等加载旧包。我以前依赖我的编码。我发现round_any函数从plyr很有用,在很多情况下,我需要对绘图,表格等进行自定义四舍五入。dplyr的round_any等价物?

x <- c(1.1, 1.0, 0.99, 0.1, 0.01, 0.001) 

library(plyr)  

round_any(x, 0.1, floor) 
# [1] 1.1 1.0 0.9 0.1 0.0 0.0 

是否有tidyverseround_any功能等效从plyr包?

+2

没有,但功能相当简单,在这种情况下'地板(x/0.1)* 0.1'。为避免加载包,使用'::'表示法:'plyr :: round_any'。 – Axeman

+2

它似乎被'ggplot2 :: cut_width'取代。请参阅https://github.com/tidyverse/ggplot2/releases/tag/v2.0.0 – FlorianGD

回答

3

ggplot::cut_width正如其中一个注释中指出的那样,甚至不会返回数字向量,而是返回一个因子。所以它不是真正的替代品。

由于round而不是floor是默认的四舍五入方法,自定义更换,直到(dplyr解决方案可到达)将

round_any = function(x, accuracy, f=round){f(x/ accuracy) * accuracy}