问题标签 [non-standard-evaluation]

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 投票
0 回答
42 浏览

r - 如果尚未引用,则有条件地引用/替换表达式

我正在寻找一种方法来引用传递给函数的参数(考虑、 或 的substitute()行为)ggplot2aes()但有条件地这样做 - 仅当尚未用.subset()data.table[quote()

这是因为我想轻松链接函数,这些函数不会假设参数是否先前被引用 - 而是根据需要替换它。

几个问题:

  1. 为什么这是个坏主意?
  2. 是否已经有任何内置方法可以实现这一目标?
  3. tryCatch部分是因为如果Promise 评估为未定义的变量,is.language则会引发错误。x还有其他/更好的解决方案吗?

我想出了什么:

这个怎么运作:

0 投票
2 回答
642 浏览

r - 在 R 中使用 NSE 制造信息性的 `stopifnot()` 错误

我想犯信息stopifnot()性错误。

我已阅读: http ://r-pkgs.had.co.nz/tests.html (最后关于使用 NSE 打印出示例的信息性测试错误的部分似乎相关)和 http://adv -r.had.co.nz/Computing-on-the-language.html 但我无法用简洁的代码打印出信息性错误:

输出给出了这个(信息量不大)

错误:eval(bquote(.(x) %in% e[[.(z)]])) 不是 TRUE

我希望错误信息更丰富,这样说:

错误:5 %in% e[["label"]] 不是 TRUE

我怎样才能让它工作?或者实现我想要的最佳方法是什么

我知道我可以写一个 if condition not true 然后打印我自己的错误作为替代,但是额外的代码很麻烦。我想了解如何让 NSE 让它发挥作用。

编辑:我采用这种方法的动机来自阅读哈德利的评论(在http://r-pkgs.had.co.nz/tests.html):

但是,如果期望失败,这不会提供非常丰富的输出:

相反,您可以使用一些非标准评估来产生更多信息。关键是使用 bquote() 和 eval()。在下面的 bquote() 调用中,注意使用 .(x) - () 的内容将被插入到调用中。

0 投票
2 回答
130 浏览

r - 怎么获得 。在 dplyr::do 中正确解释的公式中?

我有以下数据框:

我想对每列与其他列进行多重回归,并从每个模型中提取 R 平方。这意味着我可以运行以下代码:

并记下 R 平方。

我想自动执行此任务并有两列数据框,其中第一列是因变量,第二列是 R 平方。

这是我尝试过的:

我已经对我被卡住的部分发表了评论。我收到以下错误:

0 投票
1 回答
41 浏览

r - 获取引用列表的名称而不进行评估

我有一个引用列表

(我最终evalja 的一部分data.table

我想要的是提取该names列表而不必评估表达式,因为在正确的环境之外评估表达式会产生错误。

0 投票
2 回答
394 浏览

r - 在 dplyr v.0.7 中使用 dplyr::arrange 进行编程

我正在尝试了解有关dplyr编程和非标准评估的新实现。所以verb_函数被enquo参数替换,然后应用!!在常规动词函数中。从select旧到新的工作正常,以下函数给出了类似的结果:

但是,当我尝试使用arrange新的编程风格时,我会得到一个错误:

32 显然是 的行数mtcars, 的内部函数dplyr显然需要这个长度的向量。我的问题是为什么新的编程风格不适用arrange以及如何以新的风格进行翻译。

0 投票
1 回答
190 浏览

r - r dplyr 非标准评估 - 在函数中排序条形图

我已阅读http://dplyr.tidyverse.org/articles/programming.html关于 dplyr 中的非标准评估,但仍然无法正常工作。

plot_column <- “columnA”

当 mutate 语句被禁用时工作正常。但是,当启用它以便按高度对条进行排序时,只会返回一个条。

如何将上面的语句转换为函数 / 以使用变量但仍绘制按大小排序的多个条形图。

一个示例数据集可以是:

编辑

一个样品:

将输出一个有序的条形图。如何将其包装到可以替换列并获得多个条形的函数中?

0 投票
1 回答
56 浏览

r - 如何在 dplyr 中运行 nlxb 和 wrapnls?

我正在尝试使用and (并最终)wrapnls并行使用许多非线性拟合,但是我从以下位置得到解析评估错误:dplyrbroommclapplynlxb

do我同时使用和方法得到了这个错误lapply

有没有办法解决?

0 投票
2 回答
168 浏览

r - dplyr 编程:过滤器的意外行为

我正在尝试以编程方式使用 dplyr:带引号变量的过滤器行为是不可理解的。

经过几次尝试分析真实数据后,我创建了以下虚拟数据。

怎么了?提前感谢您的任何想法!

0 投票
0 回答
95 浏览

r - 将 `cbind()` 作为函数参数传递

假设我有一个不错的小数据框

我想要aggregate其中的一部分:

我如何使它成为程序化的?我想通过:

  1. 要聚合的变量列表cbind(x,z)
  2. 分组变量a(我将在程序的其他几个部分中使用它,所以传递整个东西cbind(x,z)~a没有帮助)
  3. 事情发生的环境

我的出发点是

它工作到一半:

所以我有点能够建立我需要的公式的字符表示,但将它放入aggregate()失败。

0 投票
0 回答
107 浏览

r - R,data.table,非标准评估,错误的输出名称?

首先是我所看到的一个快速示例,然后是一些关于我为什么要做我正在做的事情的背景。

注意两个问题,我最关心的是第二个(错误的列名)。

我特别喜欢做的只是传递一个在data.table []内部评估的字符串,但我无法让它工作,只有i,j等分别

我为什么要这样做,好吧,简化版本是我正在编写一个执行此评估的函数。

更长的答案是我想遍历文件、聚合、rbind,然后再次聚合。但是,聚合数据的完整列表太大而无法放入内存。因此,我正在做一些循环,rbinding,聚合,更多循环,rbinding,聚合,然后聚合聚合,然后循环......我有一个函数允许我编写一个函数来执行此操作以灵活的方式,无需每次都重写循环。我已经这样做了很多次,并且处理各种循环级别的认知负担比它真正应该的要高。所以我希望这样的功能会很有用。

该功能如下。