问题标签 [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.
r - 如何使用 quosure 在 dplyr 中将过滤器语句作为函数参数传递
使用中的dplyr包R,我想将过滤器语句作为函数中的参数传递。我不知道如何将语句评估为代码而不是字符串。当我尝试下面的代码时,我收到一条错误消息。我假设我需要一个 quosure 什么的,但我没有完全掌握这个概念。
r - dplyr case_when 具有动态案例数
想要使用 dplyr 并将case_when一系列指标列折叠成一个列。挑战是我希望能够折叠未指定/动态数量的列。
考虑以下数据集,gear已拆分为一系列指标列。
我正在尝试编写一个相反的函数。
当我知道有多少情况下可以这样做:
但是,我希望该combine_indices函数能够处理任意数量的索引列(现在它正好适用于三个)。
根据?case_when文档!!!(但我不能让这个工作:
仅生成一个填充有 NA 的新列。
如果!!!patterns可行,那么获取列表cols并vals生成patterns. 但是,我无法得到正确的说法。希望更熟悉quosures的人知道如何。
注意 - 这里的一些类似的问题是使用连接或其他功能解决的。但是,由于在使用 dbplyr 时它如何转换为 sql ,我只能使用它。case_when
r - 在 ggplot 函数中使用 quosure 注释
我制作了下面的散点图函数。
但是,我无法使方程式的注释部分起作用。如果我调用该函数,则会收到错误消息:
错误:Quosures 只能在 quasiquotation 上下文中不被引用。
坏的:
列表(!!myquosure)
好的:
dplyr::mutate(数据, !!myquosure)
但是,当我删除代码的注释部分时,它工作得很好。我必须对代码进行哪些更改才能使其正常工作?
r - 当列名有空格时,以编程方式从数据框中选择列
我有一个我想查询的数据框。请注意,该数据框的列可能会更改,并且列名具有 spcaes。我有一个要应用于数据框列的函数。我想我可以通过编程找出存在哪些列,然后使用该列列表将函数应用于存在的列。
当列名没有空格时,我能够弄清楚如何做到这一点:请参阅下面的代码
但是当列名有空格时,这种方法不起作用,下面是我使用的代码:
有没有办法在不更改名称的情况下选择名称中有空格的列?
r - 向假人解释 quosure
我正在尝试制作一个函数,当给定将变量传递给绘图时,它将产生一个绘图。该变量是从下拉列表中选择的 - 因此aes_string。
我收到此错误:
r - 在 dplyr 的 left_join 中使用 as_label / as_name 而不是 quo_name 连接两个数据集
根据关于使用 quosure 作为 by 参数连接数据集的答案,建议使用:quo_name为了使用 quosures 连接表;我想使用as_name/ as_labelas得到相同quo_name的结果,目前处于质疑生命周期阶段
这些功能处于质疑生命周期阶段。
as_label()并且as_name()应该用来代替 quo_name()。as_label()将任何 R 对象转换为字符串,但只能用于创建默认名称。标签化不是一个定义明确的操作,不应对标签做出任何假设。另一方面, as_name() 仅适用于(可能是quosured)符号,但它是一个定义明确且确定性的操作。
例子
错误
错误
is_quosure(x):'col_ltr'找不到对象
期望的结果
r - 与现有列名冲突时强制 dplyr 评估传递的符号/quosure
问题
我想将列名的字符串转换dplyr::arrange为表单am <- "cyl"。目的是按列排序cyl。
期望的结果
尝试
1)rlang::quo
按amnot排序cyl。
2)rang::ensym
按amnot排序cyl。
3)咖喱卷
未排序。
背景
在实际功能中,我按我正在创建的索引列对数据框进行排序。具有列名称的变量称为index_column。我想保护自己免受实际数据包含index_column. 我可以使用make.names和扫描唯一的列名来解决这个问题,但我对解决上述问题更感兴趣。
r - R:在使用 dplyr 的函数中,我如何检查以确保在继续之前没有引用参数名称?
长话短说:我有一个函数可以让参数grouping.var = record_id起作用,但grouping.var = "record_id"会返回不正确的数据而没有错误。所以我希望我的函数检查传递给参数的名称是否不在引号中。
长话短说:我经常有数据,每个研究对象都会有多次访问,每次访问对应一行。一些在访问之间不会改变的数据(例如种族或性别)只出现在一行上。我的函数会将数据从我提供的变量复制到该主题的所有行。
如果我不小心引用了 grouping.var,它将返回错误的数据而不会出错。
如果我没有发现错误,这可能会给我带来很大的麻烦。所以我想添加一个检查来确定传递给该参数的名称是否格式正确。
我已经尝试过if(is.character(grouping.var)),if(is_quosure(grouping.var))和if(is.object(grouping.var))语句,但如果 grouping.var 没有被引用(即格式正确),它将返回一个错误。如果名称在引号中,我需要一些可以停止该功能的东西,但如果它不在引号中,则允许它继续。
我承认,quosures 通常让我很困惑,所以我可以在这个问题上使用一些帮助。也欢迎其他主要问题的解决方案。

