问题标签 [nse]

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 回答
62 浏览

r - 在 dplyr 中使用参数作为 col 名称

我正在努力使用参数和直接从数据框中混合引用列名。请帮我更正第二个函数以返回与第一个函数相同的结果

0 投票
1 回答
166 浏览

r - 在 dplyr::case_when 中使用 NSE

我已经阅读了Programming with dplyr文档并尝试编写一个简单的函数来包装该case_when()函数。

我希望新列candd将基于 and 中的值创建ab但它们只是NAand 0。任何想法为什么会这样?

干杯。

0 投票
2 回答
377 浏览

r - 如何使用整洁的评估语义选择、复制和重命名 tibble 中的多个列?

我想在我的 tibble 中复制一组变量,以便我可以在下游评估中拥有variable_unmodifiedvariable值。我想出了一个使用旧式下划线 NSEselect_()函数和的 hacky 版本.dots,但想使用更新的 NSE 方法的整洁评估语义。

这就是我想要的:

输出:

但是,如果我尝试使用select()and来执行此操作!!.dots则无法按预期工作:

列未按需要命名:

这样做的正确方法是什么?unparsed_names此外,避免定义为单独变量的奖励积分......

0 投票
1 回答
723 浏览

r - 具有 dplyr 的用户定义函数 - 基于组合参数改变列

我正在使用以下示例数据开发一个闪亮的应用程序:

这使:

我想创建一个用户定义的函数,允许选择分数类型(例如Score1Score2Score3),开始年份(year_from)和结束年份(year_to),并计算年份之间的差异。例如,选择Score120152016将给出:


我已经阅读了有关使用编程dplyr的文档,但对使用quosures. 尝试以下公式失败:

这会产生错误:Error in !older.name : invalid argument type

如果我省略mutate(Diff = !!recent.name - !!older.name),则函数的其余部分有效,但我确实需要公式中的差异计算。

0 投票
1 回答
771 浏览

r - dplyr::mutate 取消引用 RHS

我想知道如何正确地UQ在 RHS 上dplyrmutate. 请参阅我在wilcox.test此 MWE 部分的评论中收到的错误消息:

我猜!!(qcol) ...它被解释为我想取消引用整个表达式,而不仅仅是变量名,这就是它找不到的原因base?我还发现(!!qcol)返回字符串本身,因此-操作员无法处理它也就不足为奇了。

0 投票
2 回答
228 浏览

r - - 使用非标准评估收集操作员

我想编写一个函数,它将 quosure 作为参数,附加-到 quosure,并将其传递给gather,如下所示:

这显然是因为我需要将 quosure 的每个元素-附加到 ,而不是将整个 quosure 附加到-。但在我的工作中,以 - 的形式创建这个 quosure 并不容易,quos(-mpg, -cyl, -disp)那么我该如何修改quos(mpg, cyl, disp)以添加-

我希望看到与 相同的结果gather(mtcars, key = k, value = v, -mpg, -cyl, -disp),其中前 3 行是

这里有一个类似的问题,但没有答案,似乎没有处理quos()而不是的问题quo()

0 投票
1 回答
127 浏览

r - 在 dplyr 函数中访问新变量

我正在编写一个函数来计算需要使用 dplyr 和 tidyr 进行 NSE 评估的计数表的优势比。显而易见,这是我第一次进入 NSE 世界。

例如,使用数据框“foo”:

我首先做计数: foo2 <- foo %>% count(strata, group, select)

接下来,我使用 tidyr 的 unite and spread 折叠成宽格式,它通过组的值命名新列并选择列:

最后,我计算一个新列,或者为

要将此代码放入函数中,我使用 enquo 和 !! 处理原始列,但要计算新列,或者,我需要新创建的列(由组和选择列的值的串联命名)。问题是如何“取消引用” OR 计算的名称?

我当前的草稿在联合/传播之后保存中间结果,将名称放入向量中,并使用 $`!!'() 运算符。这感觉很笨拙。更好的方法?

我的功能:

我的原始数据框 'foo' :

0 投票
2 回答
1232 浏览

r - 在 R 中的函数中创建和使用新变量:tidyverse 中的 NSE 编程错误

在阅读并重新阅读了许多“使用 dplyr 编程”指南之后,我仍然找不到解决我的特殊情况的方法。

我知道 tidyverse 函数的使用group_by_mutate_这种“字符串友好”版本正在走向弃用,这enquo就是要走的路。

但是,我的情况有些不同,我正在努力寻找一种整洁的方式来解决它。

事实上,我的目标是在函数中创建和操作数据框。基于其他变量创建(变异)新变量,使用它们等。

但是,无论我多么努力,我的代码要么出错,要么在检查包时返回一些警告,例如no visible binding for global variable ....

这是一个可重现的示例:

这是我想要做的:

一些常见的 dplyr 操作,其预期结果应该是:

我希望这段代码函数中安静地工作。以下是我处理非 NSE 问题的最佳尝试:

不幸的是,我仍然收到以下消息:

有没有办法解决它?非常感谢!

编辑:我正在使用 R 3.4.1、dplyr_0.7.4、tidyr_0.7.2 和 tidyverse_1.1.1


回答

感谢我设法解决它的评论,这是可行的解决方案:

多谢 :)

0 投票
0 回答
224 浏览

r - dplyr:如何在 `bind_rows` 中取消引用?

我令人惊讶的新体验dplyr是,如果我对tibbles 进行涉及取消引号(!!xrlang::UQ(x))的各种操作,然后将它们分配给变量并最终将它们合并,bind_rows一切正常;而嵌入的相同操作bind_rows会因一些错误而失败。更令人困惑的是,错误并不总是相同的:我得到了quote(x) must resolve to integer column positions, not formula(this is with selectand mutate)和Column quote(x) is of unsupported type quoted call(this with group_by)。我想知道这种行为背后的原因是什么,我做错了什么还是这是一个错误?

0 投票
1 回答
381 浏览

r - R for 循环中的非标准评估:包含 dplyr 汇总的函数中未引用的输入变量始终返回 NA,但过滤器函数有效

简短的摘要

dplyr 取消引用作为函数的参数失败,summarise其中引用的对象是使用的函数的参数summarise,并且该参数在 for 循环中分配。

循环

功能(此处略,下图)

在此处输入图像描述

长总结

我有两列有时包含 NA,我想使用dplyr 非标准评估及其著名的取消引用(AKA bang bang !!)在一个 for 循环中总结每一列。

在此处输入图像描述

我们在下面看到 filter 函数可以很好地处理取消引用 (!!) 但 summarise 函数失败,返回“argument is not numeric or logical”错误。当我:=在“使用 dplyr 编程”小插图中使用 summarise 函数调用(此处未显示)时,也会发生同样的情况。最后,我确认了函数中的数字的。!!sumvarchkfunc

在此处输入图像描述