问题标签 [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.
list - 为什么可以在准引用列表末尾的非列表上使用取消引用拼接?
quasiquoted 列表`(1 ,@2 3)
无效,因为 2 不是列表。但是,`(1 2 ,@3)
它是有效的并且会返回一个虚线列表:(1 2 . 3)
。我在 Common Lisp 和 Scheme 中观察到了这个结果。为什么可以在 quasiquoted 列表的末尾对非列表使用 unquote-splicing?为什么结果是点列表?
r - {testthat} `quasi_label` 和 `expect_match` 抛出“错误:参数类型无效”
我是 {testthat} 的新手,并且正在为修改字符串的函数构建测试,并且预计会为某些输入模式生成特定的输出。
作为示例(下面的表示形式),add_excitement
在其输入字符串中添加一个感叹号。当输入“hello”时,它应该返回“hello!”;当给出任何其他输入时,它不应该返回“你好!”。我想对一系列模式进行{testthat} 行为并返回信息性错误,这些错误指定导致错误的模式。
基于 {testthat} 包文档,我相信我应该使用expect_match
. 但是,这会引发“无效的参数类型”错误,而expect_identical
有效。我不明白为什么会这样。我的问题是:
- 为什么不
expect_identical
接受expect_match
这个quasi_label
论点? - 我可以使用
expect_identical
而不是expect_match
用于我的目的,还是会冒其他错误的风险?
这是一个代表:
由reprex 包于 2021-02-04 创建(v0.3.0)
谢谢您的帮助!
r - 使用 data.table 时,使用参数呈现多个 Rmarkdown 报告失败并显示“错误:`:=` 只能在 quasiquoted 参数中使用”
大家早上好,
如上所述,我正在尝试为每个报告呈现具有不同参数的多个 Rmarkdown 报告。基本上我有一个 .csv 文件的文件夹,我必须清理它。我已将所有步骤打包在一个 .Rmd 文件中,因为这样可以清理数据并生成一份简短的报告来记录结果。一些数字,一些统计数据,没有什么戏剧性的,只是对清洁过程的概述。
由于每个 .csv 文件略有不同,我必须调整一些参数。这是简单的部分。我在“R for Data Science”一书中找到了一些不错的代码,你可以在这里找到。https://r4ds.had.co.nz/r-markdown.html#parameters
这是我的版本:
当 .Rmd 文件使用 data.frames 时,一切运行良好。由于我的 .csv 每个大约 1 GB,我会使用 data.table 来加快速度。但是,一旦我的 .Rmd 文件包含一些 data.table 代码,我就会收到以下错误消息:
如果我只用 .Rmd 渲染一个文件rmarkdown::render(input = "template_datatable.Rmd", output_file = "test.html", params = list(name = "datatable", carat = 5))
,那么带有 data.table 代码的 .Rmd 就可以正常工作。
我的问题是。是什么导致了这个错误?有没有办法解决它?
这是我使用 data.frames 的 .Rmd 代码:
我使用 data.tables 的 .Rmd 代码:
谢谢你的帮助。
r - tidyr 稍后在函数中使用胶水字符串
所以这很好用:
但是之后
投掷
零件中的一些“粘贴”或“胶水”可以"mean_{{mean_var}}_plusone" := "mean_{{mean_var}}"+1
解决这个问题吗?
请注意,这显然不是一个有用的案例,它是语法的 MWE。我实际上想定义两个具有不同名称的新列,一个使用另一个......否则我必须重复它也会变得混乱。
haskell - 在 where 语句中使用声明引用器
我正在实现一个基于使用标准haskell 函数/组合器来构建数据库查询的DSL。从实现 POV 中,我决定在查询中表示变量,如下所示:
然而,这迫使用户Var "something"
经常写作,所以我决定编写一个自动执行此操作的 quasiquoter。
这是 DSL 的一个示例:
我希望它是什么:
或类似的东西。
我写的准引用者在这里:
原来我只写quoteVars
。为了在 ghci 中进行测试,我添加了expQuoteVars
. 但是,现在删除后一个并尝试编写
给我留下两个错误:
因为where [quasiquoter]
之后一无所有
和
我如何使用 quasiquoterquoteDec
代替a quoteExp
?这可能吗?
如果这样更容易,我也愿意像这样使用它:
我查看了 wiki.haskell.org 和 TH 模块的“教程”和信息站点,但无法弄清楚如何做到这一点...... https://wiki.haskell.org/Template_Haskell#What_to_do_when_you_can.27t_splice_that_there https ://wiki.haskell.org/Quasiquotation https://wiki.haskell.org/A_practical_Template_Haskell_Tutorial
haskell - 如何获取 Haskell 代码字符串(连同值)
我想同时获取任意 Haskell 代码的字符串和值。例如:
我想这样做的原因是因为我正在编写一种编程语言,并且我想提供一个选项来解释代码(用于快速运行,即脚本)或将其编译为 Haskell 代码(用于高效运行时)。因此,对于每个内置函数,我只想提供一次实现。那就是我不想说
我有一些想法,包括阅读原始的 haskell 源代码或生成编译器的单独脚本,但如果这个问题是可能的,这些似乎不太优雅。
看起来 QuasiQuotation 可以使这成为可能,但是如果我使用它,我无法弄清楚如何获取表达式的 Haskell 值(我只能获取字符串)。
是否可以?如何做呢?
r - 从字符串赋值给变量
我想从字符串动态创建一个变量名,然后分配一个值。我相信我应该能够轻松地做到这一点,{rlang}
但无法从包文档、高级 R和搜索中解决。下面是我正在寻找的伪代表。感谢您的指导!
我想要的输出:answer <- 42
我的输入:(x <- "answer"
除了“答案”是生成的并且没有在脚本中硬编码)
试图:rlang::sym(x) <- 42
r - 什么!!R中的运算符均值
任何人都可以解释一下,我们需要什么!!
,!!!
或者{{}}
运营商来自rlang
哪里?我试图了解更多关于 quasiquotation 但没有得到任何东西。
我已经在 Stack 上看到了几篇关于 curly-curly 运算符的帖子,并且了解到{{
我们在将数据帧的变量(或我们对象的其他子对象)传递给函数时使用。但是在阅读了quote/unquote之后,我对所有这些运算符及其用法完全感到困惑。
为什么我们需要它,为什么有些函数没有它就不能读取参数,最后,它们实际上是如何工作的?
如果您以我能理解的最简单的方式给出答案,我将不胜感激(也许有例子?)。
r - 使用 dplyr 在自定义函数中无法识别默认参数
拿这个功能foo()
。我希望它有一个默认参数,cyl
因为这是它通常会处理的字段的名称。
但令我惊讶的是,除非我明确提供默认参数,否则该函数将不起作用。请参阅下面的失败代码
Error: Problem with `mutate()` column `cyl_refactor`. ℹ `cyl_refactor = foo()`. x object 'cyl' not found
似乎只有当还有如下数据参数时才会处理默认参数。
我确信我对 quasiquotation 的了解存在一些差距,但我想了解如何在foo()
.