Werden wir Helden für einen Tag

Home | About | Archive

Higher-order functions in functional programming languages in R

Posted on May 18, 2012 by Chung-hong Chan

R 有個 function 叫 paste() 。

paste("The current date and time is", Sys.time(), "and you current working directory is", getwd(), ". Mr Stark.")

Output 是

"The current date and time is 2012-05-18 13:05:39 and you current working directory is /home/chainsaw/Stat . Mr Stark."

基本上就是將一大堆的 String 串成一個大 String 。此 paste() 為我常用的功能之一。
但是,此 paste function 有一個問題。例如我想將存有 1-4 string 的 vector 串成 "1 2 3 4" ,如下 code :

paste(as.character(1:4))

出來的結果仍是 vector ,不是如我所預料那樣。解決方法是用 Higher-order function Reduce() ,如此:

Reduce(paste, as.character(1:4))

此 Reduce 是將 paste 變成這樣:

paste(paste(paste(1,2),3),4)

此類的 function 還有 Map, Filter, Find, Position 和 Negate 。最近工作上要常常用到如此 function 去除去 for loop 。


Powered by Jekyll and profdr theme