问题标签 [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.
r - ggplot中函数内aes(...)中变量的范围
考虑一下ggplot(...)
函数内部的这种使用。
看起来ggplot
无法识别i
函数内部定义的变量,但可以识别i
它是否在全局环境中定义。这是为什么?
请注意,这给出了预期的结果。
r - plyr 函数和标准评估
我想将 plyr 函数包装在我自己的函数中。我想向函数传递一个对象和应用剪切函数的变量(未加引号)。
我不知道如何在 ddply 中使用对象 var 将其值指定为变量,而不是将“var”指定为变量。
与 dplyr 不同,没有 plyr 函数的标准评估版本?我读到我可以使用字符串,但例如dlply(x, .(week = cut("time", "1 week")), "[")
失败
我也尝试过lazyeval,但我迷失在标准/非标准评估领域。
r - 使用标准评估更改 dplyr::count 中的变量名称
dplyr::count_
当以标准评估方式使用分组变量时,如何更改其名称
例如,如果在最后的 tbl 中我不想要 var 名称 "Species" 而是 "Type" :
我也想知道这个表达式是如何dplyr::count_
工作的以及这个表达式应该做什么?你有解释吗?
谢谢 !
r - 使用lazyeval进行变异的标准评估
我正在尝试制作我自己的函数来包装 dplyr 函数。
我有一个数据框列表,我想用给定的标签修改指定变量的级别(两者都应该是函数的参数)。
这是我到目前为止所尝试的:
但我无法让它工作,我只是不明白为什么......你知道我错过了什么吗?谢谢。
r - 非标准评价,高级 R 书中的混乱
所以在 Hadley 的高级 R 书中,有一个使用替代的问题示例,这里是代码的摘录:
你能看出问题所在吗?condition_call 包含表达式条件。因此,当我们评估 condition_call 时,它也会评估 condition,它的值 a >= 4。但是,这无法计算,因为在父环境中没有名为 a 的对象。但是,如果在全局环境中设置了 a,则可能会发生更令人困惑的事情:
在本书的上述段落中,有几件事让我感到困惑。
句子“condition_call 包含表达式条件”。符号“条件”在函数子集 2 中用作形式参数,也用于 scramble(subset2(x,condition)) 中的实参数。我猜他提到了这个真实/调用参数“条件”,对吗?
作为一个承诺,subscramble 定义中的条件是惰性求值的?为什么调用时不评估它:scramble(subset2(x,condition))
换句话说,我如何通过查看代码来知道一个 Promise 是否被评估?例如,如果我理解正确,如果我将代码更改为以下内容:
现在条件被强制评估。这里有什么规则?
当 Hadley 说“当我们评估 condition_call 时,它也会评估 condition”,“它”是什么?他的意思是“评估”触发了某种内部或二次评估,试图解决承诺“条件”吗?这发生在哪里?即R试图使用什么环境来找出“条件”的值是什么?
所以错误“object a not found”不是由于下面调用中的“x”或“parent.frame()”,而是在其他地方?我完全糊涂了。
r <- eval(condition_call, x, parent.frame())
r - 为什么我使用 SE 或 NSE dplyr 函数得到不同的结果
嗨,当我通过lazyeval 包使用标准评估时,我从 dplyr 函数中得到了不同的结果。
以下是如何使用 250k 行和大约 230k 组重现接近我的真实数据的内容。我想按 id1、id2 分组,并为每个组使用 max(datetime) 对行进行子集化。
当我使用 NSE 方式时,我得到了 230000 行
但是当我使用 SE 时,我只有 229977 行
我的两段代码是等价的吧?为什么我会遇到不同的结果?谢谢。
r - R 包函数中的标准评估与非标准评估
建议,R-package 函数内部的函数调用最好使用标准评估(见这里),尤其是避免utils::globalVariables
.
如果我对dplyr包使用非标准评估,那么以下代码片段的标准评估的“翻译”是什么 - 特别是对于table
-command?
grp
和dep
是数据框的数值mydf
,x
而是一个因素。
非标评价:
标准评价?
而且,函数调用ggplot
呢?是否ggplot
有标准评估支持?
编辑:添加了可重现的示例。
r - dplyr 过滤器的标准评估版本似乎被忽略
我正在尝试编写一个函数,用户将在其中指定数据框和列名(字符串)并将字符串传递给dplyr
filter
函数。
我相信我应该使用filter_
,但我似乎无法让它按预期运行。
考虑下面的数据框data
。如果我想将它通过管道传输到 NSE 版本,filter
则完成如下所示
但是,当我尝试在函数中实现它时,过滤器似乎被忽略,如下所示。
这不是通过函数传递参数的细微差别,因为返回的结果完全相同。
问题:如何编写具有所需参数的函数来过滤数据帧dplyr
?
r - 使用 mutate_ 进行标准评估以按组计算百分比
我正在尝试使用标准评估dplyr
来计算百分比作为两个分组变量的函数。问题出在我的mutate_ statement
.
这是一个数据集:
这是我正在使用的代码:
当我运行代码时,我收到一个错误:
setNames(list(interp(quote(n_in_group/sum(n_in_group, na.rm = TRUE) * ) 中的错误:缺少参数“nm”,没有默认值)
有什么想法吗?
r - 我应该如何在包中使用 uq() 函数?
我对uq()
函数的行为感到困惑。当我使用uq()
or时,行为是不一样的lazyeval::uq()
。
这是我的可重现示例:
首先,我生成一个假数据集
然后我写了一个玩具函数,toy_function_v1
只使用uq()
:
和第二个函数使用lazyeval::uq()
:
令人惊讶的是,v1 和 v2 的输出不一样:
有什么解释吗?
我知道使用语法package::function()
在新包中使用函数是一个好习惯。那么在这种情况下最好的解决方案是什么?
这是我的 session_info :