R语言 | 向量化操作purrr包

Python网络爬虫与文本数据分析

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。

问题

比如有一个序列ns,现在想得到res,让ns中每一个数字变为平方数,代码如下

ns <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

res <- c()
for (n in ns) {
    res <- c(res, n*n)
}

res
##  [1]   1   4   9  16  25  36  49  64  81 100

R语言tidyverse中的purrr包含三个向量化操作函数,如果熟悉Python的map会很容易理解R语言的purrr;求平方用purrr解决代码如下

library(purrr)

# map(数据, 操作函数)
res <- map(ns, function(x)x*x) 
unlist(res)
##  [1]   1   4   9  16  25  36  49  64  81 100

purrr包

purrr包是R语言中提高代码效率的包,常见的函数有


  • purrr::map(.x, .f) 对x实行f操作

  • purrr::map2(.x, y, .f) 对x和y实行f操作

  • purrr::pmap(.l, .f) 对多维列表l实行f操作

参数含义
.x数组(类似于Python中的列表)
y数组(类似于Python中的列表)
.f应用到数组上的操作(函数)
.l列表(列表中一般含有多个数组)

map计算年龄

library(tibble)

infos <- tibble(
    family=c("张", "李", "王", "赵"),
    name=c("三", "四", "五", "六"),
    born=c(1990, 1992, 2000, 1985)
)

infos

计算年龄

age <- purrr::map(infos$born, function(x, y){2020-x}) %>% unlist()
infos$age <- age
infos


map2拼接姓名

fullname <- purrr::map2(infos$family, infos$name, function(x, y)paste0(x,y)) %>% unlist()
infos$fullname <- fullname
infos


pmap拼接姓名

上面所有的操作都使用的map和map2,现在使用pmap操作拼接姓名

infos <- tibble(
    family=c("张", "李", "王", "赵"),
    name=c("三", "四", "五", "六"),
    born=c(1990, 1992, 2000, 1985)
)

infos


fullname <- purrr::pmap(list(x=infos$family, 
                             y=infos$name), 
                        function(x, y)paste0(x, y)) %>% unlist()
infos$fullname <- fullname
infos

R语言相关

R语言 | 读写txt、csv、excel文件 
R语言 | 数据操作tidyr包

R语言 | 数据操作dplyr包  
R语言 | jiebaR中文分词包
R语言 | 词频统计 

R语言 | 制作词云图  



后台回复关键词【purrr】获取本文代码和数据
  • 分享”和“在看”是更好的支持!

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值