问题标签 [quosure]

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 投票
0 回答
220 浏览

r - mutate_at 与带有字符串参数的 quosure

当函数的参数是字符串而不是 quosure(例如来自 Shiny UI)时,我可以想到 2 个选项在dplyr::mutate调用中使用它:

  1. 字符串-> quosure

    /li>
  2. mutate_at

    /li>

有任何理由偏爱其中之一吗?有没有我可能不知道的边境案件?为了保持一致性,我想坚持一个选项,我需要决定我应该选择哪一个。选项 2 需要较少的依​​赖项,但我想确保两个变体确实是相同的。

0 投票
1 回答
191 浏览

r - 在嵌套函数中传递准引用参数

下面我编写了一个snafu()计算新变量的简单函数snafu_var

现在我想嵌套snafu()在另一个函数foobar()中,该函数将利用snafu().

我在两个方面苦苦挣扎(可能相关):

1) 内的嵌套函数foobar()似乎无法访问提供给 的参数foobar(),从而导致错误消息:

2)一旦我让嵌套函数工作,我怎么能snafu_var在函数内调用它的输出foobar()

这只是一个更复杂的嵌套函数的代表,但解决我的问题的关键是函数是嵌套的,并且由嵌套函数创建的变量snafu(),被父函数使用,foobar()

0 投票
3 回答
504 浏览

r - R&quosures - 如何获取作为函数参数传递的向量中包含的符号名称?

我想编写一个 R 函数arg2str,它返回作为参数提供的符号的名称(即字符串向量)。

对于最简单的情况,我只有一个输入符号:

如果我有多个符号,我可以使用三点结构:

(附属问题:为什么在这种情况下显示的字符串结果向量带有初步换行符而不是初步换行符[1]?)

但我实际上想处理符号向量。然而:

我如何调整我的功能来做到这一点?


我的第一个直觉是首先通过 using 引用参数向量中包含的符号sapply(而不是引用参数向量本身),然后应用于rlang::quo_name得到的 quosures 向量。但似乎参数向量中的符号在对它们中的每一个调用sapply之前都在内部进行了评估enquote

0 投票
1 回答
3364 浏览

r - 为什么我不能取消引用这个quosure?

我正在阅读有关准引用的一些注释: https ://dplyr.tidyverse.org/articles/programming.html 。

在我第一次阅读之后,我尝试了一些东西。特别是让我感到困惑的是:

太好了,我已经创建了一个quosure!然后我想

将立即计算表达式,产生“foo”。虽然很自然,但这是错误的!

我不明白为什么。我错过了什么?


运行:R 版本 3.5.1 (2018-07-02) -- "Feather Spray" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit)

软件包 rlang 版本:0.2.1

0 投票
2 回答
77 浏览

r - R:为什么 group_by 仍然需要“做”,即使使用 quosures

如何使用户定义的函数与管道和 group_by 很好地配合使用?这是一个简单的函数:

该函数与管道很好地配合使用,并允许按另一列过滤:

但是,相同的管道工作因 group_by 而失败

在 group_by 之后使用“do”使其工作:

应该如何更改函数,以便它与 filter 和 group_by 一致地工作而不需要“do”?
或者 quosures 与问题无关,而 group_by 只需要使用“do”,因为示例中的函数有多个参数?

0 投票
1 回答
309 浏览

r - 嵌套函数中的 Quosure

我正在努力编写一个使用fun1的函数fun2 ...并不断出错。我在下面写了一个简化的例子。这是我第一次处理“整洁的评估”,不确定它的来龙去脉。

示例数据框:

第一个功能

如果我对此进行测试,我会得到一个数据框作为回报,正如预期的那样

第二个功能 现在有了fun2,我试图在 for 循环中使用 fun1 来从 ti 迭代到 seq 向量的 tf :

但是如果我运行这个

我收到一条错误消息

我尝试了各种事情......我有点卡在这里。我想我没有正确使用enquo()。我可以通过不使用varX并将每个元素的实际适当名称直接放入fun1参数中来使其工作,但对我而言,这样做的全部意义在于使其“通用”,因此仅指定参数fun2然后将传递给fun1

任何帮助将不胜感激。

0 投票
1 回答
94 浏览

r - 如何使用可能会或可能不会传入的几个函数参数来过滤数据帧?(R; dplyr)

我正在编写一个函数,该函数接受多个参数、字符串或字符串向量,这些参数与我想要过滤的属性相对应。我还想编写我的函数,以便当未指定过滤器属性时,它会被忽略,而其他过滤器属性可以工作。

为什么这种速记quo不能以这种方式工作,我该如何改变它才能做到这一点?

0 投票
1 回答
151 浏览

r - 使用 dplyr 和 enquo 我的代码有效,但当我传递给 purrr::map 时无效

我想为称为日期的向量中的每一列创建一个图。我的数据框只包含这些列,我想对其进行分组,计算出现次数然后绘制它。

下面的代码有效,除了map我想用来遍历以前未知数量的列。我认为我使用map正确,我之前已经成功了。我是使用 quosures 的新手,但鉴于我的函数调用有效,我不确定出了什么问题。我查看了其他几个似乎以这种方式设置的帖子。

我收到此错误:grouped_df_impl(data, unname(vars), drop) 中的错误:列.x未知

0 投票
0 回答
339 浏览

r - r - 从列表中打印图返回 quosure 错误

我使用ggplotand生成了一系列图lapply,如下所示:

我正在使用一个可以简化为的大型数据框:

这会生成一个图列表,如下所示:

地块列表

我正在尝试打印或ggsave输出此列表,如下所示:在 lapply 中保存绘图

但是,所有导出/打印结果图的尝试,无论是使用lapply循环还是简单print语句,都会返回以下错误。

恐怕关于 quosures 的 R 文档没有产生任何有用的见解。我不是开发人员,也不太了解大部分文档。谁能帮我吗?

我最初发布此内容时并没有之前发生太多复杂的lapply过滤,因为这似乎是一种分散注意力的无关紧要的事情。我现在提供它以防万一。作为参考,实际的数据框head如下所示:

0 投票
1 回答
90 浏览

r - 使用 quosure 调用变量值

我想在循环中动态调用变量的值。这是问题的一个例子。我是 tidyverse 的新手,不擅长 quos 和 quosures。

这给出了所需的输出:

但是,如上所述,我在循环中使用它并且需要调用变量名:temp.name并且sample.name在循环内动态调用。以下是我失败的尝试。

谢谢您的帮助。