Использование stringr для переформатирования столбцов - PullRequest
1 голос
/ 05 мая 2020

Я в процессе создания серии функций из API. Мне нужна помощь в переформатировании аргументов API следующим образом:

  • Возьмите пример столбца и создайте 2 столбца. В первом столбце будет текст между скобками. В этом случае он будет начинаться с необязательного. Я хочу, чтобы столбец был необязательным, а затем запятой с текстом, который начинается со значений по умолчанию или значений по умолчанию.
  • Второй столбец - это текст, который следует после круглой скобки. Это исключит значение по умолчанию, если оно стоит после скобок, как в строке 1 args_df

Input df

args_df <- tibble::tribble(
          ~argument,                                                                                                                                   ~example,
  "response_format", "(optional) Specifies the format in which the requested resource should be returned.  Valid values are XML and JSON.  The default is XML.",
            "round",                               "(optional, defaults to all rounds) Specifies the round number for which draft results are being requested."
  )

output_df <- tibble::tribble(
          ~argument,                          ~required,                                                                                                   ~details,
  "response_format",         "optional, default is XML", "Specifies the format in which the requested resource should be returned.  Valid values are XML and JSON.",
            "round", "optional, defaults to all rounds",                                   "Specifies the round number for which draft results are being requested"
  )

1 Ответ

2 голосов
/ 05 мая 2020

Возможен вариант str_extract

library(dplyr)
library(stringr)
library(purrr)
args_df %>%
   mutate(required = map_chr(str_extract_all(example, "(?<=\\()[^)]+|default[s]?[^.]+"), toString), 
   details = str_remove_all(example, "\\([^\\)]+\\)\\s*|\\s*\\w+\\s*default.*")) 
...