我有两个单独的操作:
allusers$ref <- str_to_upper(allusers$ref)
allusers$ref <- str_trim(allusers$ref)
是否可以通过管道传输它们?
allusers$ref <- str_to_upper(allusers$ref) %>% str_trim(allusers$ref)
给予
“ match.arg(side)中的错误:'arg'的长度必须为1”
理想情况下,我不会每次都输入allusers$..
答案 0 :(得分:3)
如果您只想在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
管道,但还是可以看到一些替代方案
答案 1 :(得分:2)
好的,你可以写
allusers$ref <- allusers$ref %>% str_to_upper %>% str_trim
那是因为您想将str_to_upper
和str_trim
应用于字符串,并且通过管道传输allusers$ref
您确实将第一个参数传递给该字符串。
有些传统的方式是
allusers <- allusers %>% mutate(ref = str_trim(str_to_upper(ref)))