问题标签 [non-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 - dplyr::summarise 中的 R 用户定义/动态汇总函数
如果听起来没有很多类似的问题,很难定义这个问题!
我有一个函数,我希望其中一个参数是函数名称,它将传递给 dplyr::summarise,例如“mean”或“sum”:
(这按 gear 和 cyl 分组,然后返回,每组,count 和 mean(disp))
根据我的笔记,我希望“意思”是动态的,执行 zFun 定义的功能,但我一生都无法弄清楚如何去做!提前感谢您的任何建议。
r - curly curly 整洁的评估编程,具有多个输入和跨列的自定义函数
我的问题与此问题类似,但我需要跨列应用更复杂的函数,但我不知道如何将 Lionel 建议的解决方案应用于具有范围动词 likefilter_at()
或filter()
+across()
等价物的自定义函数。看起来并没有{{{}}}
引入“superstache”/ 运算符。
这是我想做的一个非编程示例(不使用 NSE):
我还没有找到与+对应的这一filter_at
行,但由于新的(ish)tidyeval 函数早于 dplyr 1.0,我认为可以搁置这个问题。这是我尝试制作一个程序版本,其中过滤变量由用户提供,带有点:filter
across()
如果有一种方法可以在vars()
参数中插入一个 NSE 运算符filter_at
而不必进行所有这些额外的调用,我会很高兴(我假设这是一个{{{}}}
函数会做的事情?)
r - 使用 dplyr 在 r 数据帧中使用非标准评估和变异
我无法弄清楚如何使用包含 R 数据框列名的字符串进行一些基本计算以变异为新列。例如,我有基线值列和其他具有治疗后时间点的列。我想为此使用列名字符串,因为我将使用指定了不同时间点的数据,并且我想要一个编程解决方案。
例如,我有这个数据框,我想我需要在下面的 mutate 行中使用一些语法,但无法弄清楚如何写右手边。我希望名为“day1_fc”和“day2_fc”的列代表 day1/baseline 和 day2/baseline 的倍数变化。
我希望结果看起来像:
r - 使用 NSE 构造公式
我正在尝试使用 NSE 构建一个公式,以便我可以轻松地在列中进行管道传输。以下是我想要的用例:
我首先做了这个功能:
这适用于单个对象或多个对象:
我创建了我的函数来创建接下来的公式:
但是,函数调用formula(df, col, col1, col2, col3)
会产生[1] "group ~ ..1 + ..2 + ..3"
.
我知道该公式实际上是在评估varstring(group)
,varstring(...)
而不是像我想要的那样实际替换用户提供的对象进行评估。但我无法弄清楚如何按预期进行这项工作。
r - 将数据框的列传递给内部函数
我想将列通过管道传递到一个purrr::imap_dfr
使用自定义内部函数执行的函数中。
我的目标是df %>% diffmean(df, group, col1, col2)
运行t.test(col1 ~ group, .data = df)
并且t.test(col2 ~ group, .data = df
.
如果我只是在我想要分组的列中硬编码!!group
并且如果我切换出我想要选择的变量,则上面的代码有效!!!vars
。
我只是想让这个通用以供将来使用。
例如,使用diamonds
来自的数据集ggplot2
:
产生:
r - 从可能的标签库中为数据框分配标签
我想创建一个从不同环境更新数据框的函数。具体来说,我想使用该Hmisc::label()
函数更新数据框的标签。
以下代码执行没有问题:assign_label(mtcars, hp)
但是,它实际上并没有改变调用环境中的数据帧。我只是不知道如何让它做我想象的那样。
理想情况下,我希望能够将数据框通过管道传输到此函数:
mtcars %>% assign_label(mpg)
r - 识别命名函数是否作为函数参数提供
作为我一直在从事的项目的一部分,我希望允许用户返回嵌套对象结构的各种输入的摘要。部分对象用作容器或格式化程序,而其余部分则用于解析其他输入。
基本上,摘要将格式化“名称”、“函数类型/名称”和其他一些描述符。但我在第二部分“函数类型/名称”上有些意外。
如何确定是一个命名函数还是类似 lambda(未命名)的函数作为参数提供给函数?
我解决问题的一些想法是替换输入(假设它没有丢失)并检查输入是否name
是call
但这是不完整的,因为一个函数call
仍然可以被认为是一个命名的
在最简单的格式中,我将搜索要返回的函数"named function"
并"unnamed function"
搜索已加载的命名空间。例如。sum
andsum(x)
是一个命名函数,whilefunction(x) x**2
是一个未命名函数。
r - 在具有向量值参数的非标准评估函数中使用`facet_wrap`
我想制作一个使用ggplot
并将facet_wrap
函数变量传递给 facet by 的函数。
我可以使用带引号的参数执行以下操作。
但是,我想使用未引用的参数来做到这一点,例如
我知道我可以使用vars
with facet_wrap
,例如
所以我可以做这样的事情
facet_by
但如果是向量,那将不起作用。
那么有没有办法得到我想要的上面的东西,即在哪里facet_by
需要一个名称向量的单个变量名称?
r - 在 bquote 内使用 =
Error: unexpected '=' in "bquote(.(as.name(a)) ="
Error in bquote(A = 4) : unused argument (A = 4)
Error: unexpected '=' in "bquote(f(.(as.name(a)) ="
我怎样才能解决这个问题?