R for data science之purrr包(上)

神器purrr包是Hadley Wickham大神編寫的高級函數編程語言包,它可以填充R功能性編程中的缺失部分,使得你的編程更加函數化。

purrr包提供了大量的類似map的函數。可以服務於減少循環、處理嵌套數據、多模型等應用需求。

map()函數

rm(list=ls())library("purrr") #載入包data(mtcars) #使用數據集mtcarshead(mtcars) #查看mtcars數據的前五行dim(mtcars) #查看數據mtcars的維度##求mtcars數據的均值map_dbl(mtcars, mean)mtcars %>% map_dbl(mean)

##對mtcars的數據進行標準化mtcars %>% map(function(x) (x - mean(x)/max(x)-min(x))) # listmtcars %>% map_df(function(x) (x - mean(x)/max(x)-min(x)))# data.frame

map2()

n <- list(4,5,6)m <- list(1,2,3)map2(m,n, `+`)

by_cyl <- mtcars %>% split(.$cyl)mods <- by_cyl %>% map(~ lm(mpg ~ wt, data = .))map2(mods, by_cyl, predict)

pmap()

x <- list(1, 10, 100)y <- list(1, 2, 3)z <- list(5, 50, 500)pmap(list(x, y, z), sum)

pmap(list(x, y, z), function(a, b ,c) a / (b + c))

accumulate() # 行列長度不變

mtcars[1,]mtcars[1,] %>% accumulate(`+`) # 從左向右

mtcars[1,] %>% accumulate(`*`)

mtcars[1,] %>% accumulate_right(`+`) # 從右向左

mtcars[1,] %>% accumulate_right(`*`)

reduce () # 獲得一個值

mtcars[,1]

mtcars[,1] %>% reduce(`+`) # 從左向右

mtcars[,1] %>% reduce(`*`)

mtcars[,1] %>% reduce_right(`+`) # 從右向左

mtcars[,1] %>% reduce_right(`*`)

detect () # 找到第一個匹配的值

mtcars[2,]mtcars[2,] %>% detect(~. >50)

# detect_index() 並返回它的位置

mtcars[2,] %>% detect_index(~. >50)

some() 列表中的某些元素是否滿足要求? 返回結果TRUE/FALSE

every() 列表中的每個元素是否滿足要求?

mtcars %>% some(is_numeric)

mtcars %>% some(is_character)

mtcars %>% every(is_numeric)

mtcars %>% every(is_character)

x <- list(1:5,R,ruby,python)x %>% every(is_character)

x %>% some(is_character)

x %>% every(is_numeric)

x %>% some(is_numeric)

文末彩蛋

R for data science


推薦閱讀:

BI轉數據挖掘,我的脫產學習路
七周成為數據分析師:Excel技巧:好用到哭的多級菜單
YARN 分散式資源調度
人工智慧和機器學習會逐漸取代金融和數據分析師嗎?

TAG:R编程语言 | 数据分析师 | 数据挖掘 |