gpt4 book ai didi

r - 解析包含 `:=` 的表达式?

转载 作者:行者123 更新时间:2023-12-04 11:23:11 25 4
gpt4 key购买 nike

包含 := 的表达式不要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))" .

我正在寻找一个通用的解决方案来解析 :=就像 =<-在所有情况下。

解决方法

此解决方法使用了 <<- 的事实。具有相似或相同的优先级并且不经常使用。我代替 :=来自 <<-在原始调用中,它很好地解析,而我 gsub返回 := .不过,我想要一个干净和通用的解决方案。
gsub("<<-",":=", deparse(do.call(
substitute, list(call2, list(`:=` = quote(`<<-`))))))
#> [1] "f(a := b(c := d))"

最佳答案

您可以使用 rlang::expr_deparse() 达到您想要的结果它提供了一些打印改进。

rlang::expr_deparse(call2)

[1] "f(a := b(c := d))"

关于r - 解析包含 `:=` 的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56186483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com