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

r - dplyr::summarise 中的 R 用户定义/动态汇总函数

如果听起来没有很多类似的问题,很难定义这个问题!

我有一个函数,我希望其中一个参数是函数名称,它将传递给 dplyr::summarise,例如“mean”或“sum”:

(这按 gear 和 cyl 分组,然后返回,每组,count 和 mean(disp))

根据我的笔记,我希望“意思”是动态的,执行 zFun 定义的功能,但我一生都无法弄清楚如何去做!提前感谢您的任何建议。

0 投票
3 回答
254 浏览

r - curly curly 整洁的评估编程,具有多个输入和跨列的自定义函数

我的问题与此问题类似,但我需要跨列应用更复杂的函数,但我不知道如何将 Lionel 建议的解决方案应用于具有范围动词 likefilter_at()filter()+across()等价物的自定义函数。看起来并没有{{{}}}引入“superstache”/ 运算符。

这是我想做的一个非编程示例(不使用 NSE):

我还没有找到与+对应的这一filter_at行,但由于新的(ish)tidyeval 函数早于 dplyr 1.0,我认为可以搁置这个问题。这是我尝试制作一个程序版本,其中过滤变量由用户提供,带有点:filteracross()

如果有一种方法可以在vars()参数中插入一个 NSE 运算符filter_at而不必进行所有这些额外的调用,我会很高兴(我假设这是一个{{{}}}函数会做的事情?)

0 投票
1 回答
39 浏览

r - 使用 dplyr 在 r 数据帧中使用非标准评估和变异

我无法弄清楚如何使用包含 R 数据框列名的字符串进行一些基本计算以变异为新列。例如,我有基线值列和其他具有治疗后时间点的列。我想为此使用列名字符串,因为我将使用指定了不同时间点的数据,并且我想要一个编程解决方案。

例如,我有这个数据框,我想我需要在下面的 mutate 行中使用一些语法,但无法弄清楚如何写右手边。我希望名为“day1_fc”和“day2_fc”的列代表 day1/baseline 和 day2/baseline 的倍数变化。

我希望结果看起来像:

0 投票
4 回答
77 浏览

r - 使用 NSE 构造公式

我正在尝试使用 NSE 构建一个公式,以便我可以轻松地在列中进行管道传输。以下是我想要的用例:

我首先做了这个功能:

这适用于单个对象或多个对象:

我创建了我的函数来创建接下来的公式:

但是,函数调用formula(df, col, col1, col2, col3)会产生[1] "group ~ ..1 + ..2 + ..3".

我知道该公式实际上是在评估varstring(group)varstring(...)而不是像我想要的那样实际替换用户提供的对象进行评估。但我无法弄清楚如何按预期进行这项工作。

0 投票
2 回答
47 浏览

r - 将数据框的列传递给内部函数

我想将列通过管道传递到一个purrr::imap_dfr使用自定义内部函数执行的函数中。

我的目标是df %>% diffmean(df, group, col1, col2)运行t.test(col1 ~ group, .data = df)并且t.test(col2 ~ group, .data = df.

如果我只是在我想要分组的列中硬编码!!group并且如果我切换出我想要选择的变量,则上面的代码有效!!!vars

我只是想让这个通用以供将来使用。

例如,使用diamonds来自的数据集ggplot2

产生:

0 投票
2 回答
91 浏览

r - 从可能的标签库中为数据框分配标签

我想创建一个从不同环境更新数据框的函数。具体来说,我想使用该Hmisc::label()函数更新数据框的标签。

以下代码执行没有问题:assign_label(mtcars, hp)

但是,它实际上并没有改变调用环境中的数据帧。我只是不知道如何让它做我想象的那样。

理想情况下,我希望能够将数据框通过管道传输到此函数:

mtcars %>% assign_label(mpg)

0 投票
1 回答
62 浏览

r - 将列名传递给函数

我对非标准评估有一个简单的问题:将变量名作为参数传递给函数。

作为一个可重现的例子,这里有一个简单的事情:mpgmtcars数据集中取一个变量的平均值。我的最终目标是拥有一个可以输入数据集和变量并获得平均值的函数。

所以没有函数:

我尝试使用get()非标准评估,但出现错误:

reprex 包(v0.3.0)于 2020-09-19 创建

编辑:

我还有一个额外的后续问题。

我还需要将variable参数作为char字符串,我尝试了下面的代码,但我仍然想念如何做到这一点:

reprex 包(v0.3.0)于 2020-09-19 创建

0 投票
1 回答
25 浏览

r - 识别命名函数是否作为函数参数提供

作为我一直在从事的项目的一部分,我希望允许用户返回嵌套对象结构的各种输入的摘要。部分对象用作容器或格式化程序,而其余部分则用于解析其他输入。

基本上,摘要将格式化“名称”、“函数类型/名称”和其他一些描述符。但我在第二部分“函数类型/名称”上有些意外。

如何确定是一个命名函数还是类似 lambda(未命名)的函数作为参数提供给函数?

我解决问题的一些想法是替换输入(假设它没有丢失)并检查输入是否namecall

但这是不完整的,因为一个函数call仍然可以被认为是一个命名的

在最简单的格式中,我将搜索要返回的函数"named function""unnamed function"搜索已加载的命名空间。例如。sumandsum(x)是一个命名函数,whilefunction(x) x**2是一个未命名函数。

0 投票
2 回答
61 浏览

r - 在具有向量值参数的非标准评估函数中使用`facet_wrap`

我想制作一个使用ggplot并将facet_wrap函数变量传递给 facet by 的函数。

我可以使用带引号的参数执行以下操作。

但是,我想使用未引用的参数来做到这一点,例如

我知道我可以使用varswith facet_wrap,例如

所以我可以做这样的事情

facet_by但如果是向量,那将不起作用。

那么有没有办法得到我想要的上面的东西,即在哪里facet_by需要一个名称向量的单个变量名称?

0 投票
1 回答
85 浏览

r - 在 bquote 内使用 =

Error: unexpected '=' in "bquote(.(as.name(a)) ="

Error in bquote(A = 4) : unused argument (A = 4)

Error: unexpected '=' in "bquote(f(.(as.name(a)) ="

我怎样才能解决这个问题?