问题标签 [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.
r - R 使函数对标准和非标准评估都具有鲁棒性
我有一个小功能可以搜索用户定义column
的依赖于dplyr
. 在下面的当前形式中,它接受非标准评估中的列参数 - 不带引号(例如scenario
,而不是"scenario"
标准评估)。
无论用户如何输入列名,即在标准或非标准评估中,是否有办法使该功能正常工作?
r - 如何在 R 中的函数内部使用 dplyr/magrittr 的管道?
我正在尝试编写一个函数,该函数将数据框和函数名称作为参数。当我尝试使用标准 R 语法编写函数时,我可以使用@hadley 在http://adv-r.had.co.nz/Computing-on-the-language.htmleval
中的建议获得良好的结果substitute
现在,当我尝试使用%>%
运算符编写相同的函数时,它不起作用:
如何将管道运算符与eval
and结合使用substitute
?这对我来说似乎真的很棘手。
r - 使用 dplyr 的 do() 处理复杂表达式的 NSE
当变量引用为".$mpg"
.
读完这里之后,我认为使用 as.name 就可以了,因为我有一个字符串,它给出了一个变量名。
例如,这有效:
这不起作用:
但这确实:
这也是:
我希望能够在表单中指定变量,.$mpg
以便当我没有为数据指定点的选项时可以将它与 do() 一起使用,如下例所示:
- 这里选择了随机变量来演示 prop.test 函数是如何工作的,请不要将此解释为滥用测试。
最终,我想把它变成这样的函数:
我最初认为我必须做类似的事情:
interp(~var, var = as.name(miles)
wheremiles
将被替换为.$mpg
,但正如我在顶部提到的那样,这似乎不起作用。
r - 使用传递给 dplyr::filter 的参数创建一个函数 解决 nse 的最佳方法是什么?
使用 dplyr 的动词时,非标准评估非常方便。但是在使用带有函数参数的动词时可能会出现问题。例如,假设我想创建一个函数,为我提供给定物种的行数。
示例不起作用
此函数无法按预期工作,因为species
它是在 iris 数据帧的上下文中解释的,而不是在函数参数的上下文中解释的:
3 实施实例
为了解决非标准评估,我通常在参数后面加上下划线:
它并不完全令人满意,因为它将函数参数的名称更改为不太用户友好的名称。或者它依赖于自动完成,我担心这不是编程的好习惯。为了保持一个好的参数名称,我可以这样做:
另一种解决基于此答案的非标准评估的方法。
在函数环境的上下文中interp()
解释:species
考虑到上面的 3 个功能,实现此过滤器功能的首选 - 最强大 - 方法是什么?还有其他方法吗?
r - 如何在lazyeval中将'...'参数传递给interp()公式
我正在尝试进行一些参数化dplyr
操作。表达问题根源的最简单的可重现示例是:
这就是我一个人走了多远
尝试使用“na.rm”参数
非常感谢您的帮助!
r - 使用 mutate_ 应用按行归约?
我有一个包含很多列的数据框,包括四个代表子类别的列。
我想用一列替换所有这些“page_x”列,只显示最右边的非 NA 细节级别。有很多逐行的问题,但我找不到一个与 NSE 和 Reduce 一起工作的问题。
在上面的示例中,这将是:
我认为在每一行上使用 Reduce 是一个很好的例子。我有一个在单行上工作的版本,但我找不到将它应用于 mutate_ 的方法。
这不起作用(因为我猜“行”对象并没有真正通过这种方式):
r - 使用 magrittr 反向管道编写非标准评估语法
我正在寻找简化代码的简单方法。
例子
该sqrt
函数可以很容易地应用于下面的列子集。
问题
我有兴趣将其他转换应用于子集,而无需再次键入整个子集序列。
例如代码:
将返回错误:
与使用语法相同.
。我的问题是:语法方面,我怎样才能获得与函数相同的效果,sqrt
但将更长的函数应用于传递的子集?
r - R函数来安装丢失的包
对于我的一个脚本,我想编写一个 R 函数来检查一个包是否已经安装:如果是这样,它应该使用 library() 将它导入命名空间,否则它应该安装并导入它。
我假设pkgname是一个字符串,并尝试编写如下内容:
如此简单,此功能不起作用。如果我尝试像ensure_library("dplyr")
安装包 dplyr 一样运行它,但它会失败,因为它尝试导入pkgname
而不是dplyr
在命名空间中。
另外,如果我现在重新运行它,它将dplyr
再次安装。
我意识到这可能是由于 R 非标准评估,我尝试了几种 eval/substitute/quote 的组合以使其工作,require
但我无法成功。
有人可以帮助我了解发生了什么以及是否有一些简单的解决方法吗?
如果一个已经实现它的函数存在,我想知道,但我真正感兴趣的是理解为什么我的代码不能按预期工作。
r - 与 dplyr mutate 的评估顺序不一致
我在 mutate 调用中使用了 2 个函数。一个按预期产生每行结果,而另一个对所有行重复相同的值:
这会产生类似的东西:
即d
列变化,但是v
是恒定的,并且它的值实际上并不对应于任何行中的X
和值。Y
我怀疑这与 NSE 有关,但我不明白我是如何从小事中找到它的。
div
是什么导致和的不同行为pv
?我该如何解决pv
?