像这样的data.frame
:
df <- data.frame("Config" = c("C1","C1","C2","C2"), "SN1" = 1:4, "SN2" = 5:8)
我正在尝试使df %<>% mutate
更通用。这是一个示例:
df %<>%
mutate(
Tag=paste(
Config,
as.character(SN1),
as.character(SN2),
sep="_"
)
)
所希望的是将向量c("Config", "SN1", "SN2")
传递到上面的mutate
或执行相同工作的替代方法,即将新列Tag
插入上面的data.frame
。谢谢您的帮助
答案 0 :(得分:1)
就像我在评论中提到的那样,这不是关于运算符%<>%
的问题,而是关于在dplyr
函数中使用非标准评估(NSE)的问题。上面有一个pretty good vignette,但是要掌握NSE /整洁的评估仍然很棘手。
也正如我提到的,您作为示例所做的正是tidyr::unite
所做的,因此,如果您只需要这些,则实际上不需要编写任何内容。但这是一个很好的简单示例。
在此功能custom_unite
中,第一个参数是.data
,该数据帧正在操作(要传递的习惯是将第一个参数作为数据帧)。然后...
捕获了要粘贴的灵活数量的裸列名称,new_col
是要创建的列的裸列名称,sep
照原样传递给{{ 1}}。 (我无意间将参数的顺序从paste
切换到tidyr::unite
而不是col, ...
。)
您需要创建列的数量。对于单个裸列..., new_col
,可以使用new_col
,但是对于灵活的列数,可以在enquo
上使用quos
,然后将其与{{ 1}}。
要创建新列,您将使用...
而不是!!!
来分配未引用的报价。
:=
由reprex package(v0.2.1)于2018-12-14创建