问题标签 [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 投票
2 回答
181 浏览

r - 在具有公式接口的函数中使用准引用

我想编写一个可以接受bare"string"输入的自定义函数,并且可以在有和没有公式接口的情况下处理这两个函数。

自定义函数示例

适用于有和没有公式接口的函数

细绳

适用于有和没有公式接口的函数

作为colnames

仅适用于没有公式接口的函数

如何修改原始函数,使其适用于上述所有输入输入的方式以及使用的两种函数?

0 投票
1 回答
77 浏览

f# - F# 代码引用:我可以定义自己的具体和抽象语法吗?

在 Haskell 中,我可以使用 quasiquoter 使用自定义解析器定义的具体语法生成自定义 AST,如下所述:https ://wiki.haskell.org/Quasiquotation

这在 F# 中可能吗?

0 投票
2 回答
73 浏览

lisp - 如何在语法树 (CL) 中表示准引号

我了解引号是如何用语言表示的:

但是准引号呢?是这样的吗:

两者都quasiquotebackquote而不是<???>不工作。

0 投票
1 回答
80 浏览

r - 创建一个支持带引号和不带引号的参数的函数(使用 data.table),然后在 purrr::map (或 lapply)中工作

我有以下仅适用于引用变量的函数:

我已经成功地创建了基本相同的函数,它能够接收带引号和不带引号的变量(感谢 data.table 中的“by”参数,它接收列表或字符向量)。

现在我希望我的函数能够使用 purrr::map (或 lapply)进行迭代,如下所示:

哪个有效。

这是来自 data.table 的消息,它接收 '.' 作为 'by =' 表达式中的 vars 变量。purrr::map 发送 '.' 由于这不是一个字符,因此它直接指向:

我猜有更好的方法来解决引用/取消引用问题并保持在data.table.

0 投票
2 回答
187 浏览

r - 在函数内部使用 `expr()`

Advanced R的第 19 章解释了expr()在函数内部没有用处。

但是,在以下情况下,如果没有expr().

假设我想在一个函数中对一个 tibble 进行分组。

显而易见的方法是使用“卷曲卷曲”。

但是,如果我允许任意提供的表达式,则“卷曲”不起作用。

最后,我发现我需要expr()让它工作。

expr()Advanced R 中的示例是:

我的主要问题是为什么func_c有效。是否expr()...原样评估它!!?为什么我们要采取不同的方法...呢?

然后,我不确定为什么这不起作用。

我还检查了rlang manual,但解释对我来说太简短了。

0 投票
1 回答
3495 浏览

r - 只有字符串可以在 R 中的函数内转换为符号

我有一个功能,旨在对从具有许多手动输入字段的各种来源获得的数据进行操作。由于我不知道这些文件中使用的布局或命名约定会发生什么,我希望它“扫描”数据框以查找具有字符串“fix”、“name”或“agent”的列,并且将该列更改为名为“Firm”的新列,然后继续对该列的条目进行字符串清理,最后删除原始列。我已经让它与我已经拥有的一些 CSV 一起工作,但现在遇到了这个错误:只有字符串可以转换为符号。我已经检查了这个线程错误:只有字符串可以转换为符号,但无济于事。

这是目前的功能:

我尝试在 grep() 函数周围使用 as.character() ,但这并没有解决问题。我查看了该函数要对其进行操作的 CSV,并且所有列名都是字符串。我使用vroom()读取 CSV ,就像我的其他 CSV 一样,效果很好,所有列名都出现了。我可以在 df 上执行其他dplyr功能,向我暗示 df 在其他方面表现正常。关于为什么该功能仅在我的某些 CSV 上阻塞但在其他 CSV 上按预期工作,我已经没有想法了。有没有人遇到过类似的问题或对可能导致此错误的原因有任何线索?这是我第一次使用 SO——如果这个问题不是很清楚,我很抱歉。我会根据需要尝试和编辑。

谢谢!

0 投票
2 回答
87 浏览

r - 将字符串作为参数传递给粘贴函数

我正在尝试将字符串变量名称传递给粘贴函数以将所有字符串粘贴在一起。这是一个mwe:

但是,我想要的是粘贴到一个字符串中的 3 个变量的内容

我知道准报价,所以我尝试过

但这只会给我

我知道这个话题在互联网上被疯狂的详细介绍,但我尝试了每一个rlang动词都没有成功。

0 投票
2 回答
517 浏览

r - `dplyr::_join` 函数的命名向量“by”参数

我正在向dplyr::_join两个数据帧by不同的列写入一个函数,第一个数据帧的列名动态指定为函数参数。我相信我需要使用rlang准引用/元编程,但无法获得有效的解决方案。我很感激任何建议!

reprex 包于 2020-10-05 创建(v0.3.0)

以下是我查阅的相关资源:

感谢您的意见。

0 投票
2 回答
69 浏览

r - 在用户创建的函数中对公式语法使用 quasiquotation?

当我运行此代码时:

我收到以下错误

如何使用 quasiquotation 使此功能起作用?我假设逻辑与我们如何调用library(dplyr)而不是library("dplyr").

0 投票
3 回答
129 浏览

scheme - 用作准引用正确列表中倒数第二个符号时的“取消引用”行为

我正在尝试(1 unquote 2)使用 quasiquote 生成列表。我试过这个:

但是,在 Racket、MIT 方案和 Chez 方案中,我得到一个虚线列表:'(1 . 2).

所以我尝试了这个:

但是,我得到(1 'unquote 2).

我终于用这种技术得到了我想要的列表:

为什么当unquote准引用列表中的倒数第二个元素是准引用正确列表时,我会从准引用正确列表中得到一个点列表?

实际上,它并不总是产生一个点列表。例如:

当它是准引用列表中的倒数第二个元素时,请解释这种奇怪的行为。