Можно ли передать переменную фрейма данных - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть две отдельные операции:

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(сторона): 'arg' должен иметь длину 1 "

, и в идеале я бы не набирал allusers$.. каждый раз

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Если вы просто хотите сделать это в базе 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 трубы в данный момент, и было бы хорошо увидеть некоторые альтернативы

0 голосов
/ 15 декабря 2018

Конечно, вы можете написать

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)))
...