Выражения, содержащие :=
не deparse
красиво:
call1 <- quote(f(a = b(c = d)))
call2 <- quote(f(a := b(c := d)))
# nice
deparse(call1)
#> [1] "f(a = b(c = d))"
# not nice
deparse(call2)
# [1] "f(`:=`(a, b(`:=`(c, d))))"
Я хотел бы получить следующий вывод из call2
: "f(a := b(c := d))"
.
I 'Я ищу общее решение, которое разбирает :=
точно так же, как =
или <-
во всех ситуациях.
Обходной путь
Этот обходной путь использует тот факт, что <<-
имеет аналогичный или такой же приоритет и используется не часто.Я заменяю :=
на <<-
в исходном вызове, затем он красиво отбрасывается, и я gsub
возвращаю его обратно к :=
.Хотелось бы получить чистое и общее решение.
gsub("<<-",":=", deparse(do.call(
substitute, list(call2, list(`:=` = quote(`<<-`))))))
#> [1] "f(a := b(c := d))"