00引言
在數據的處理中尤其是Rmarkdown的書寫時往往需要輸出百分數,可是R裏核心函數裏沒有現成函數。本篇總結一下常用的做法。
1、思路
1、將原有的數字乘以100,在用paste
函數粘貼%
。
2、函數包的使用。
2、R實現
2.1自編函數
> # 加載核心包
> library(compiler)
> My_percnet <- function(x){
+ return(paste0(format(x*100,digits = 1),"%"))
+ }
> My_percnet <- cmpfun(My_percnet)
> My_percnet((1:5) / 100)
[1] "1%" "2%" "3%" "4%" "5%"
這部分自編了My_percnet
函數,實現了小數向量化轉百分數。以下有兩點說明:
1、函數體內digits
可以控制百分數的位數。
2、compiler
中的cmpfun
函數可以實現自編函數編碼化,一定程度上提高自編函數的運算速度。
> My_percnet
function(x){
return(paste0(format(x*100,digits = 1),"%"))
}
<bytecode: 0x000000000c79cb30>
上面是自編函數的函數體,大家看有啥差別。有一行<bytecode: 0x000000000c79cb30>這是對函數進行編碼化。
2.2調用包
2.2.1實現
> library('scales')
> percent((1:5) / 100)
[1] "1.0%" "2.0%" "3.0%" "4.0%" "5.0%"
我們看到這個scales
中的percent
函數也能完成這個任務,但是這個函數還有些參數。下面給大家介紹下用法。
function (x, accuracy = NULL, scale = 100, prefix = "",
suffix = "%", big.mark = " ", decimal.mark = ".",
trim = TRUE, ...)
{
number(x = x, accuracy = accuracy, scale = scale, prefix = prefix,
suffix = suffix, big.mark = big.mark, decimal.mark = decimal.mark,
trim = trim, ...)
}
2.2.2scale
這個參數可以設置爲千分之一萬分之一默認爲100,百分之一。
> percent((1:5)/100,scale = 1000, suffix = "%")
[1] "10%" "20%" "30%" "40%" "50%"
2.2.3suffix
這個參數則是設置,後面的的符號。
> percent((1:5)/100,scale = 100, suffix = "#")
[1] "1.0#" "2.0#" "3.0#" "4.0#" "5.0#"
總結
相對來看自編函數可以實現,但是內置函數參數設置更加全面。有更好的想法的夥伴可以評論區指出。