如何在magrittr管道%>%中获取传入R对象的属性?
在magrittr管道中访问当前对象属性的方法
当然可以在管道链内完成这个操作,有几种常用的方式:
- 用
.指代当前传递的对象:这是magrittr管道的基础语法,.代表前一步传递过来的完整数据框。修改你的代码如下:
df <- data.frame(x=c(1,2,3,4,5), y=c(6,7,8,9,0)) %>% mutate(newcol=1:nrow(.))
- 使用
cur_data()函数(dplyr 1.0.0+):如果用的是较新版本的dplyr,cur_data()会返回当前正在操作的数据集,效果和.一致:
df <- data.frame(x=c(1,2,3,4,5), y=c(6,7,8,9,0)) %>% mutate(newcol=1:nrow(cur_data()))
- 针对行号场景的简化写法:如果只是生成从1开始的行号序列,直接用
row_number()更符合tidyverse风格,无需手动获取行数:
df <- data.frame(x=c(1,2,3,4,5), y=c(6,7,8,9,0)) %>% mutate(newcol=row_number())
内容的提问来源于stack exchange,提问作者E Maas
相关产品推荐
相关产品推荐

