首页
学习
活动
专区
工具
TVP
发布

左手用R右手Python系列之——字符串格式化进阶

关于R语言字符串格式化之前无论是专题还是案例教程中均有所涉及,今日这一篇之所以重提是因为又找到了一个很好用的字符串格式化包。

这个包的语法源于Python风格,这样可以让那些从Python迁移过来的R语言学习者无需额外的记忆负担,即可平稳掌握R语言中的字符串格式化语法。

提到字符串格式化语法,我们一定能想到paste/pasteo函数,或者str_c函数,这两个函数的用法差不多,都是通过字符串与变量之间的拼接完成字符串格式化任务,但是问题是R语言中的字符处理并不想Python中那么灵活(仅靠“+”即可拼接字符),当一个字符串中需要插入多个变量时,拼接任务变得异常复杂。

好在R语言中保留了sprintf函数,这个源自C语言家族的字符串格式化函数,在左手用R右手Python系列推送文章中,曾经就这个问题专门写过一篇,但是这个sprintf函数使用起来并不是特别方便,特别是同类格式需要重复定义,同样的问题在Python的语法中也存在。

但是Python中有另外一套字符串格式化无法,使用format函数和{}来定义,最近发现R语言中的pystr包,也模仿着Python中的这一模式定义了一套风格一致的函数,所以现在在R语言中使用字符串格式化多了一个更加高效的途径。

项目主页:

备注:(如果下载失败,可以尝试先将zip文件下载到本地,然后使用菜单式命令进行安装!)

顺序参数:

以上两句等价。

以上方法在Python中应该写成如下两种形式:

在设置顺序参数时,pystr_format函数的优越之处在于,它真正实现了右侧待插入字符参数的批量化,即如果右侧传入的字符串参数如果有多个,你可以直接传入命名的向量或者列表。

以上三句等价,风格与Python中str.format风格严格保持一致。

此时左侧的插入位置仅需输入右侧的对应名称即可,左侧顺序与右侧命名序列顺序无须严格一致(因为有名称可以索引)。

当然以上三句第一句看起来不是很友好,右侧参数是单个传入的,第二句第三个比较符合使用习惯。

那么命名关键字参数在Python中写法是这样的。

借助R语言中函数强大的向量化功能,pystr_format函数可以很容易的实现批量化插入特定字符。

而同样的功能要想在Python中实现,则要么借助循环,要么借助列表表达式或者高阶函数(结合lmanda表达式)。

使用普通的循环格式化:

使用列表表达式进行格式化:

使用高阶函数+匿名函数进行格式化

以上便是在R语言中使用Python风格字符串格式化输出函数的主要内容,除此之外,pystr包内还内只有很多其他常见的字符串格式化函数,很多功能在stringr包内都能找到原型,这里仅以字符串格式化输出为例,其他的感兴趣可以自行了解,不再赘述。

欢迎关注数据小魔方qq交流群

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111G0BVWW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券