是否可以通过管道传输数据框变量

is it possible to pipe a data frame variable

我有两个独立的操作:

allusers$ref <- str_to_upper(allusers$ref)

allusers$ref <- str_trim(allusers$ref)

是否可以通过管道传输它们?

allusers$ref <- str_to_upper(allusers$ref) %>% str_trim(allusers$ref)

给予

"Error in match.arg(side) : 'arg' must be of length 1"

理想情况下,我不会每次都输入 allusers$..

当然,你可以写

allusers$ref <- allusers$ref %>% str_to_upper %>% str_trim

那是因为您想将 str_to_upperstr_trim 应用于字符串,并且通过管道 allusers$ref 您确实将此字符串作为第一个参数传递。

有点传统的方法是

allusers <- allusers %>% mutate(ref = str_trim(str_to_upper(ref)))

如果您只想在 base R 中执行此操作,最简单的方法可能是使用普通函数组合……

allusers$ref <- str_trim(str_to_upper(allusers$ref))

或者,您可以使用 within:

allusers <- within(allusers, {
  ref <- str_to_upper(ref)
  ref <- str_trim(ref)
})

甚至组合这些选项:

allusers <- within(allusers, {
  ref <- str_trim(str_to_upper(ref))
})

虽然我确实更倾向于使用 dplyr 风格 mutate 管道,但看到一些替代品可能会很好