问题标签 [quasiquotes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
285 浏览

r - R中函数内的引号和准引号以及正则表达式的问题

我正在尝试编写一个使用 gsub 查找和替换某些字符串的函数。我有 10 多个 excel 电子表格,其中包含货币值列表,使用标准瑞典分隔符表示千位和小数,即小数用逗号而不是句点表示,千位分隔符是空格而不是逗号。英语中的 1,000.31 会变成瑞典语中的 1 000,31 吗?我正在尝试编写一个函数来消除千位分隔符所在的空格,并找到逗号并将其替换为句点。

正常的 gsub 函数工作正常:

但是,我需要在 10 多个数据帧上执行此操作,所以我认为编写一个可应用于每个数据帧的函数会更有效(下面提供了我尝试编写的函数以及可重现的示例)。这是我遇到问题的地方。我还应该提到我正在寻找一个 dplyr 解决方案。我使用该函数(如下)得到的错误是 Error: Quosures can only be unquoted in a quasiquotation context。

我承认,尽管我反复阅读了关于非标准评估和准引用的内容,但我仍然难以理解这些概念。我已阅读 dplyr 编程

https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html

我也读过:

https://rlang.r-lib.org/reference/quasiquotation.html

最后,我研究了几个关于堆栈溢出的模糊相似的问题/解决方案,但那里的解决方案似乎对我不起作用。大多数问题涉及让正则表达式工作,而不是让正则表达式在函数内部工作。

这是函数,例如:

这是一个可重现的例子:

我想要实现的直接目标是查找逗号并将逗号替换为句点的功能。但是,我也很感激有关如何在函数中包含正则表达式以删除不需要的空格的指针。

0 投票
1 回答
52 浏览

haskell - 可视类型应用程序的准引用器具体语法

在以下代码段中, , 的第一个参数fooSNat @n手动组装的:

是否有具体的 TH quasiquoter 语法?即我想写类似的东西

但这似乎被解析为好像我正在应用一个中缀运算符($@)

有趣的是,[e| |]准引用器似乎确实支持非准可见类型应用程序的具体语法:

0 投票
2 回答
135 浏览

r - 使用带有 `$` 运算符的 quasiquotation

我正在尝试使用rlang编写自定义函数。虽然当函数涉及data参数时我可以这样做,但是当函数需要向量并且我需要使用$运算符时,我很难正确使用准引号。

这是一个玩具示例-

从这里可以看出,数据正在正确导入,但return值不正确,因为我不知道如何在运算符的上下文中使用 quasiquotation $。我怎样才能做到这一点?

0 投票
1 回答
60 浏览

r - 在函数中更改 ggplot 中的图例顺序

我想在函数中绘制数据框。图例应以特定方式排序。为了在我的示例中保持简单,我只是颠倒了顺序。我实际上想选择一个特定的行并将其推到图例的最后一个位置。

顺便说一句,我正在创建一个新的 R 包,如果这有任何相关性的话。

在函数之外绘图

在函数内部绘图

最简单的方法就是使用变量,这显然行不通

我尝试使用 quasiquotation,但这种方法只能让我绘制数据框。我还不能颠倒顺序。

所以主要问题是,我不能使用准引用来分配东西。

0 投票
2 回答
482 浏览

r - 使用 data.table 进行准引用

我正试图将我的头脑围绕准报价,以便我可以将它与data.table调用一起使用。这是一个例子:

如果我想把它包装成函数,我该怎么做?我试过了:

但是得到Error in enexpr(expr) : object 'col1' not found。我假设我缺少一些步骤,因为data.table对此的评估与dplyr.

0 投票
3 回答
331 浏览

r - 为什么是 plotly() 和 enquo + !! 冲突?

我正在编写一个将 plot_ly 用于饼图的函数。参数标签中的波浪号 (~) = ~ 与取消引用运算符 !! 冲突。这个问题有解决方案吗?

例如

我希望返回一个饼图,但我收到以下错误消息:

as.list.environment(x, all.names = TRUE) 中的错误:
找不到对象“名称”

0 投票
2 回答
135 浏览

r - 在依赖准引用的函数中使用列名

我正在编写一个自定义函数,预计可以同时使用unquoted"quoted"输入。我可以使用rlang. 但是当"quoted"使用colnames.

关于如何解决这个问题的任何想法?

reprex 包(v0.3.0)于 2019 年 11 月 12 日创建

0 投票
3 回答
281 浏览

r - 使用带有 dplyr::_join 函数的 rlang 准引用

我正在尝试编写一个使用rlangquasiquotation 的自定义函数。这个函数也在内部使用dplyr'sjoin函数。我在下面提供了一个最小的工作示例来说明我的问题。

从这里可以看出,我想避免该消息#> Joining, by = c("cut", "clarity"),因此明确地想输入函数的by参数,_join但我不确定如何执行此操作。(我试过rlang::as_string,rlang::quo_name等)。

0 投票
1 回答
156 浏览

haskell - Haskell:使准引用值严格/在编译时评估

我有一个“月”类型,大致是

Month没有导出构造函数的地方;相反,一个函数

被导出,仅当输入值介于 1 和 12 之间时才会返回一个值。

现在,使用Language.Haskell.TH.Quote,我定义了一个准引用 ... 运算符?...这允许我“在编译时”“创建” Month 的实例:

Where__fromString解析一个字符串,并返回一个值或调用error. force是从Control.DeepSeq

现在这很好,但它的主要价值是尽早捕获坏值 - 但是,由于延迟评估,值 m 也不会在编译时评估(这将是理想的,而是也许是高阶)或至少在运行时的最早阶段。

有什么方法可以注释该值(最好在下面的准引用中,以便每次使用month都可以免费获得它;但如果失败,则注释m)以强制评估m程序何时运行?要求NFData约束或类似的很好。

谢谢,

0 投票
2 回答
326 浏览

r - R:将列表的元素从函数输入转换为表达式

我正在编写一个函数,其中输入是另一个函数的参数和名称。我想将这些参数和函数名转换为未计算的表达式或调用。例如,如果这是对函数的调用:

我希望该函数返回以下未评估的表达式/调用:

我已经成功引用了data=,method=formula=参数并将它们组合成一个调用。但无法弄清楚如何引用method.args=参数,并将列表元素添加到函数参数中。任何和所有的指针都表示赞赏。谢谢~