带有动态变量的Dplyr select(contains())

带有动态变量的Dplyr select(contains()),r,dplyr,R,Dplyr,我有一个DF,每个季度都会用新数据更新,也就是说,它每隔几个月就会变宽。在下一步中,我想计算第一次和最近一次观测值之间的差值。使用contains()我想动态选择第一个和最后一个观察值,避免在每次更新后再次写入变量名称 在其他情况下,我一直在使用!!sym()用于mutate()类似于下面的示例,它工作正常: df <- df %>% mutate(var1 = ifelse(!!sym(first_year) == 0, 1, 0)) 在select(contains())或

我有一个DF,每个季度都会用新数据更新,也就是说,它每隔几个月就会变宽。在下一步中,我想计算第一次和最近一次观测值之间的差值。使用
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.