read_rcl.R 1.13 KB
Newer Older
1
2
3
4
5
6
#' Read RCL file
#' 
#' @param path RCL file path
#' @return Parsed tibble of RCL file in \code{path}
#' @examples 
#' read_rcg("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl")
Keisuke ANDO's avatar
Keisuke ANDO committed
7
8
9
10
11
read_rcl <- function(path) {
  rcl <- path |>
  readr::read_lines() |>
  tibble::as_tibble() |>
  dplyr::mutate(
12
    step     = value |> stringr::str_extract("\\d+") |> as.numeric(),
Keisuke ANDO's avatar
Keisuke ANDO committed
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    agent    = value |> stringr::str_extract("\\w+_([0-9]{1,2}|Coach)"),
    team     = agent |> stringr::str_remove("_([0-9]{1,2}|Coach)"),
    unum     = agent |> stringr::str_extract("([0-9]{1,2}|Coach)$"),
    commands = value |>
      stringr::str_extract("\\(.+\\)$") |>
      purrr::map(~ .x |>
                   stringr::str_split("\\(|\\)", simplify = TRUE) |>
                   stringr::str_trim() |>
                   purrr::discard(~ .x == "")),
  ) |>
  tidyr::unnest(commands) |>
  dplyr::mutate(
    commands = commands |> stringr::str_split("\\ ", n = 2),
    command  = commands |> purrr::map_chr(1),
    args     = commands |> purrr::map(~ .x[-1]),
  ) |>
  dplyr::select(
    step,
    team,
    unum,
    command,
    args,
35
    # line = value,
Keisuke ANDO's avatar
Keisuke ANDO committed
36
37
38
39
  )
  
  return(rcl)
}