问题标签 [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 - 我是否正确/合理地使用 NSE 和 rlang?
我一直在阅读使用 dplyr 进行编程,并尝试将它描述的想法应用到我的工作中。我有一些有用的东西,但我不清楚我是否以“正确”的方式完成了它。我可以做一些更优雅或更简洁的事情吗?
我有一个tibble
where 行是场景,列与在该场景中运行的测试相关。有两种类型的列,一种是存储在该场景中计算的测试统计量,另一种是存储该测试的自由度。
所以,这是我拥有的数据类型的一个小玩具示例:
我想计算将基于 itsstat
和 its的每个测试的摘要df
。我的示例是我想计算stat
每个组的中位数,其中组由df
. 不能保证分组在测试中是相同的,甚至不能保证组的数量是相同的。
所以,这就是我所做的:
这行得通。但是,有经验的rlang
用户会这样做吗?我是 NSE 的新手,对rlang
重复使用两个嵌套函数(UQ(sym(.))
)有点惊讶。
我很高兴使用UQ
而不是!!
,只是因为我更喜欢传统的函数符号。
根据评论,我摆脱了namespace::function
符号,现在我的函数看起来并不那么冗长:
r - 函数未以预期方式评估变量
我正在尝试编写一个 R 函数来生成频率表,这样我就可以标准化格式等,而无需重复输入。唯一的问题是我无法正确评估分组变量。
下面是一些代码来获取一个迷你数据集来重现问题:
结果是:
resolve_vars(new_groups, tbl_vars(.data)) 中的错误:要分组的未知变量:字段调用自:resolve_vars(new_groups, tbl_vars(.data))
我也试过:
哪个效果更好(因为它不会出错),但实际上仍然没有正确分组因素,输出:
它只是告诉我该列中的案例数量。有谁知道我要去哪里错了?
r - group_by 通过使用整齐评估语义的字符向量
我曾经这样做,使用group_by_
但现在group_by_
已弃用。我不知道如何使用整洁的评估框架来做到这一点。
r - 在编程中使用 dplyr mutate()
我正在尝试使用 mutate 将列名分配给变量。
当我跑
它不起作用。我知道 mutate_()
可以提供帮助,但我正在努力将它与ifelse
.
任何帮助,将不胜感激。
r - 在 dplyr v.0.7 中使用 dplyr::arrange 进行编程
我正在尝试了解有关dplyr
编程和非标准评估的新实现。所以verb_函数被enquo
参数替换,然后应用!!
在常规动词函数中。从select
旧到新的工作正常,以下函数给出了类似的结果:
但是,当我尝试使用arrange
新的编程风格时,我会得到一个错误:
32 显然是 的行数mtcars
, 的内部函数dplyr
显然需要这个长度的向量。我的问题是为什么新的编程风格不适用arrange
以及如何以新的风格进行翻译。
r - 在 dplyr 中使用类 select 机制来选择不同调用的变量
期望的结果
使用简单的语法,我过滤vs
并am
留下cyl
值的列。
所需的语法
我想颠倒上面的语法,并在除列之外的所有值cyl
上选择不同的观察值,对应于下面的示例:
那自然是行不通的:
r - 使用 NSE 语法计算多列的总排名
我的目标是编写一个take_by_rank
函数
- 可以对数据框中任意选择的数字列进行操作;
- 使用非标准评估,如
base::subset
或dplyr
动词; - 自然理解减号,所以这
-foo
意味着“最大的值得foo
到最低的等级”; n
按总排名返回顶部或底部行,这是为每个选定变量计算的排名总和。
我对学习最新的dplyr 方法和寻找替代方法都很感兴趣,即对包选择没有限制(纯base
或data.table
可能?)。
我目前的解决方案是
这似乎没问题,但也许我错过了更直接的东西。如果有办法替换 for 循环,那也很好。
使用示例(供参考)
r - R:解析(+eval)字符串用作子集/ [的参数。NSE案例?
在我的应用程序中,用户可以提供“子集”表达式(由 mix: 变量、存储在变量中的名称 - videargs_input
和subset_args_input
变量组成)作为subset
/[
函数的参数:
我的期望是得到与执行相同的结果:
通过执行这个:
do.call("[", eval(parse(text=args_input)))
另外,我尝试过类似的东西subset
:
- 这两种方法都有效,但需要
eval
+parse
,如果允许用户传递任何字符串,这是不安全的。eval
问题 - 如果没有+parse
组合,是否可以达到相同的结果? - 您(R 用户:)能否请看一下上面的片段 - 是否有任何不必要的东西/违反 R 哲学的东西?
r - R quo_name 相当于 quos
嗨,在使用 dplyr 进行编程之后,我注意到可以使用 quo_name 添加名称。我想知道如何为多个列执行此操作,例如。就像一个 quos_name 之类的。例如:
变成
IE。为 ... 中指定的所有列添加均值和总和列,当然这仅作为示例,并且 quos_names 不存在。如果有办法做到这一点,那将非常有帮助。
例如,我知道可以在 data.table 中执行类似的操作DT[,(Col_names):=lapply(Cols,mean)]
(此代码不起作用,但我以前做过类似的操作)。