我在同一列上使用了几个mutate。我们如何才能只使用一次mutate而不重复列名?
df <- data.frame(
c1 = c("Élève", "Café", "Château", "Noël", "Crème")
)
df2 <- df %>%
mutate(c1 = trimws(c1)) %>%
mutate(c1 = gsub("\\s+", " ", c1)) %>%
mutate(c1 = gsub("\"", "", c1)) %>%
mutate(c1 = iconv(toupper(c1), to = "ASCII//TRANSLIT"))
3条答案
按热度按时间neekobn81#
将管道放置在
mutate
中,如下所示:ddhy6vgd2#
你可以在mutate调用中使用管道!此外,即使不是这种情况,在mutate函数调用中创建的列也可以稍后在同一函数调用中使用。所以你可以在一个mutate调用中继续重新定义c1。
但无论如何,这就是我如何做到这一点(使用几乎所有的stringr函数):
tzdcorbm3#
这并不是说您需要另一种解决方案,但是将所有步骤合并合并到一个函数中来整理
mutate
调用可能会很方便。您可以使用purrr::compose
轻松地合并组合一串函数,以便在每次需要时按给定顺序运行它们。使用G. Grothendieck的优秀代码分割成匿名函数:
或者使用Mark的tidyverse代码和
purrr
公式/函数语法:当然,如果你只使用一次,可能就没有必要了!只是一种方式有一些位比别人整洁!