问题标签 [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_label
as得到相同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
按am
not排序cyl
。
2)rang::ensym
按am
not排序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 通常让我很困惑,所以我可以在这个问题上使用一些帮助。也欢迎其他主要问题的解决方案。