问题标签 [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 回答
507 浏览

r - 使用 dplyr 的 enquo 通过 sparklyr 访问 Spark 表列

我想成为 ebale在跳过 Spark 表列时enquo在调用中使用 dplyr。lapply

但是,当我尝试运行此代码时,我不断收到错误:

错误(function (x, strict = TRUE) :参数已被评估

我已将错误隔离为enquo

(然后同样的错误)

错误(function (x, strict = TRUE) :参数已被评估

我想了解为什么enquo不能那样使用。tbl_vars返回一个普通的字符向量,不应该col_name是一个字符串吗?我设想语法以与以下相同的方式工作:

但是,当从 lapply 内部调用时,显然情况并非如此。


编辑

将 sparklyr 方面放在一边,可以提供一个更好、更可重复的示例:

产生相同的错误。

期望的结果

基于 old_的语法有效

总之,我想通过跳转到 Spark 表列来实现相同的功能,并且我不想使用 deprecated select_

0 投票
2 回答
1908 浏览

r - 在 dplyr 0.7+ 函数中重命名

我在使用 dplyr 重命名函数中的列时遇到困难。我已经找到了关于非标准评估和 enquo 使用的有用帖子(例如,http ://dplyr.tidyverse.org/articles/programming.html和 在自定义 dplyr 函数中更改结果变量的名称)。最终目标是使用该函数对每个组进行汇总,然后将列重命名为比原始变量名称更有意义的名称。

这是一个简单的示例,除了注释掉的行之外它都有效。

在函数之外,相关部分将简单地阅读:mtcars <- mtcars %>% rename("Vehicle Cylinders" = cyl, "Vehicle Gears" = gear)

我一定被重命名在函数中与函数之外的操作方式所困扰。有什么建议吗?我愿意接受建议。

更新
这是一种方法。我宁愿不把变量名放在字符串中,但不知道这里有什么办法。接受建议。

0 投票
1 回答
58 浏览

r - 如何在 dplyr 0.7.x 中为 mutate 结果赋予角色名称?

继之前涉及过滤器的问题之后,我认为该模式将是......

但是,这似乎不起作用。我明白了

我究竟做错了什么?

PS原来之前的一个问题问了一个关于重命名的类似问题。结果证明是一样的。

0 投票
2 回答
163 浏览

r - R 对象的名称承载多个功能

根据我阅读Hadley 关于构建 S3 对象的建议,我正在使用辅助函数、构造函数和验证器函数。一个简单的可重现示例:

我希望生成的对象包含一个带有传入项目的原始名称的值($x_name在上面的示例中)。如果我直接调用构造函数,这个deparse(substitute(...))技巧就有效:

但如果我使用辅助函数则不是:

我也想test_helper$x_name退货[1] "alpha"

如果没有在帮助器阶段执行该deparse(substitute(...))步骤,构造函数 ( )是否可以通过帮助器new_test_object()访问对象的“原始”名称?x或者确保它的名称随着辅助函数传递给构造函数而传递?

0 投票
0 回答
124 浏览

r - 从列列表创建表达式的连接

我想从 char 向量创建一个连词表达式。即给定一个向量,如 c("a", "b", "c")。最终我想将它传递给 dplyr::filter

这是我的尝试:

在 R 中必须有一种更简单的方法来从字符串创建这样的表达式,但我找不到任何方法。有什么建议么?

0 投票
2 回答
1682 浏览

r - dplyr 中基于字符串的过滤 - NSE

我想使用dplyr新的 NSE 符号(版本 >= 0.6)来动态filter处理我的数据。假设我有以下虚拟数据集:

如果现在我想过滤tofilter = "x"大于 5 的值的列,我知道我可以这样做:

问题 1

如果我也想动态更改过滤运算符怎么办(假设我有一个 Shiny App,用户可以在其中动态selectInput过滤大于 5、等于 5 或​​小于 5 的值的数据?

我想做的是:

显然,这是行不通的,我已经玩了一些rlangquosore/symbols 等,但没有找到正确的方法来“引用”我的输入。

问题2

额外的问题是,如果我想应用多个过滤器怎么办?我是否需要循环,或者我可以创建一个过滤表达式列表并一次性应用它们?

一个例子是一个闪亮的应用程序,用户可以键入他/她想要应用于数据的多个条件,以便我们有一个动态变化的格式列表:

我们想动态地应用它们,这样输出就相当于:

我想这在某种意义上是问题 1 的一个子集,因为当我知道如何正确引用论点时,我认为我可以这样做:

但很高兴看看是否有更好的清洁方式

0 投票
1 回答
247 浏览

r - 用于变异的 Dplyr 编程模式

在函数内部使用 dplyr mutate 时,我一直在使用标准模式。这是一个玩具示例(仅用于证明一点):

我已经把它变成了一个函数,而不是每次都输入它。但这相当冗长,我不确定是否有更简单的方法来参数化对 mutate_ 的调用。建议?

0 投票
2 回答
627 浏览

r - dplyr NSE - 如何将列名传递给变异函数调用?

我想在变量中指定的列上使用 gsub 参数来改变数据框的列,但我正在努力应对非标准评估。

在这个玩具示例中,我想在调用 gsub时使用columns[[1]]andcolumns[[2]]而不是.$name_Aand 。.$name_B我可以,还是需要重新考虑我的方法?

0 投票
1 回答
109 浏览

r - purrr 和 ggplot 函数未显示绘图(NSE 问题)

我怀疑这是处理 NSE 的问题。但是为什么这两种方法不起作用,我怎样才能让它们起作用。

0 投票
2 回答
1504 浏览

r - 为什么 quosures 在 group_by() 中有效,但在 filter() 中无效?

我正在构建一个函数,我将根据字符串操作数据框。在函数中,我将从字符串中构建一个列名,并使用它来操作数据框,如下所示:

我了解问题所在:filter()在损坏的版本中取消引用 quosure 作为参数不是引用实际列 anyA。

我不明白为什么它适用于summarize(),但不适用于filter()-- 为什么有区别?