带有动态变量的Dplyr select(contains())
我有一个DF,每个季度都会用新数据更新,也就是说,它每隔几个月就会变宽。在下一步中,我想计算第一次和最近一次观测值之间的差值。使用带有动态变量的Dplyr select(contains()),r,dplyr,R,Dplyr,我有一个DF,每个季度都会用新数据更新,也就是说,它每隔几个月就会变宽。在下一步中,我想计算第一次和最近一次观测值之间的差值。使用contains()我想动态选择第一个和最后一个观察值,避免在每次更新后再次写入变量名称 在其他情况下,我一直在使用!!sym()用于mutate()类似于下面的示例,它工作正常: df <- df %>% mutate(var1 = ifelse(!!sym(first_year) == 0, 1, 0)) 在select(contains())或
contains()
我想动态选择第一个和最后一个观察值,避免在每次更新后再次写入变量名称
在其他情况下,我一直在使用!!sym()
用于mutate()
类似于下面的示例,它工作正常:
df <- df %>%
mutate(var1 = ifelse(!!sym(first_year) == 0, 1, 0))
在select(contains())
或select(matches())
中是否有使用动态变量的方法?或者这是不可能的
谢谢你的帮助 的文档包含说明第一个参数应该是字符向量: 因此,您不必使用任何整洁的求值函数,例如
sym()
:
库(dplyr)
x=“Spe”
虹膜%>%选择(包含(x))%%>%head()
#>种类
#>1刚毛
#>2刚毛
#>3刚毛
#>4刚毛
#>5刚毛
#>6刚毛
由(v1.0.0)于2021年3月15日创建
但是,我们对您的工作了解很少(第一年和第二年是什么样子?);因此,此答案可能不正确。谢谢-有时答案似乎太简单了。:)你的建议正是我所需要的。
df <- df %>%
select(contains(!!sym(first_year)))
Error: object '2008' not found
match A character vector. If length > 1, the union of the matches is taken.