如何使用dplyr粘贴列子集 [英] How to paste subset of columns using dplyr

查看:100
本文介绍了如何使用dplyr粘贴列子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用dplyr将data.frame的动态列子集粘贴在一起?

How do I paste together a dynamic subset of columns from a data.frame using dplyr?

如果我具有以下功能:

d = data.frame(a = 1:5, b=2:6, c=3:7)

fun = function(d, colnames){

    d$f = Reduce(function(x,y)paste(x,y,sep='_'), d[,colnames])

    return(d)
}

fun(d, c('a','b'))

fun(d, c('b','c'))

fun(d, c('a','b','c'))

如何使用dplyr重写函数?

How do I rewrite the function using dplyr?

推荐答案

此处是使用 dplyr rlang

library(dplyr)
library(rlang)

fun = function(d,a,b){
  a.var <- enquo(a)
  b.var <- enquo(b)
  d %>% mutate(f = paste(!!a.var,!!b.var, sep="_"))
}

fun(d,a,b)



< h1>更新

Update

fun = function(d,...){
  #browser()
  vars  <- quos(...)
  d %>% mutate(f = paste(!!!vars, sep="_"))
}

fun(d,a)
fun(d,c,a)
fun(d,a,b,c)

这篇关于如何使用dplyr粘贴列子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆