Правильное использование str_replace_all внутри функции - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь использовать str_replace_all в определенной пользователем функции в r, чтобы заменить все вхождения буквы «T» в столбце во фрейме данных пробелом.Функция также удаляет последнюю букву из каждой строки.

Требуемый вывод

Для приведенных ниже данных будет преобразована первая таблица во вторую, когда столбец df$code пропущен через:

id    code
1     STWX
2     STVX
3     RTUX

id    code
1     S W
2     S V
3     R U

Предыдущие попытки

Я пытался использовать следующее:

str_convert <- function(x) {
str_replace_all(x, 'T', ' ')
substr(x,1,nchar(x)-1)
}

Однако вывод, который я получаю, не удаляет 'T', поэтомуконечный результат выглядит так:

id    code
1     STW
2     STV
3     RTU

Я совершаю очевидную ошибку?Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 03 января 2019

и решение Tidyverse:

df <- data.frame(id = 1:3, code = c("STWX", "STVX", "RTUX"))

str_convert <- function(x) {
  str_replace_all(x, 'T', ' ') %>%
  str_sub(1, -2)
}

df %>% 
   mutate(code = str_convert(code))
  id code code
1  1 STWX S W
2  2 STVX S V
3  3 RTUX R U

Это перенаправляет вывод из str_replace_all в качестве первого аргумента str_sub, результат которого впоследствии возвращается функцией. str_sub также может иметь отрицательное значение остановки (с обратным отсчетом), что здесь удобно.

0 голосов
/ 03 января 2019

Попробуйте это

str_convert <- function(x) {
   r <- str_replace_all(x, 'T', ' ')
   r <- substr(r,1,nchar(r)-1)
 return(r)
   }

 df1 %>% 
   mutate(res = str_convert(code))
  id code res
1  1 STWX S W
2  2 STVX S V
3  3 RTUX R U
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...