粘贴到tidyverse';s select()
我正在处理的数据集如下所示粘贴到tidyverse';s select(),r,dplyr,tidyverse,R,Dplyr,Tidyverse,我正在处理的数据集如下所示 a b vara_1 vara_2 vara_3 vara_4 vara_5 .... varb_1 varb_2 varb_3 varb_4 ----------------------------------------------------------------------------- 100 120 a b c d e w x y z 我想根据pa
a b vara_1 vara_2 vara_3 vara_4 vara_5 .... varb_1 varb_2 varb_3 varb_4
-----------------------------------------------------------------------------
100 120 a b c d e w x y z
我想根据paste0
函数生成的特定顺序更改数据集的列顺序:
> paste0(c("vara_", "varb_"),rep(1:10, each=2))
[1] "vara_1" "varb_1" "vara_2" "varb_2" "vara_3" "varb_3" "vara_4" "varb_4" "vara_5" "varb_5"
[11] "vara_6" "varb_6" "vara_7" "varb_7" "vara_8" "varb_8" "vara_9" "varb_9" "vara_10" "varb_10"
library(rlang)
condition <- paste0(c("vara_", "varb_"),rep(1:10, each=2))
data %>% select(a, b, !!!syms(condition))
# a b vara_1 varb_1 vara_2 varb_2 vara_3 varb_3 vara_4 varb_4 vara_5 varb_5 vara_6 varb_6 vara_7 varb_7 vara_8 varb_8 vara_9 varb_9 vara_10 varb_10
#1 1 2 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 11 21 12 22
因此,数据集的最终外观将变为
a b vara_1 varb_1 vara_2 varb_2 vara_3 varb_3 ....
-----------------------------------------------------------------------------
100 120 a w b x c y ....
是否可以将其转换为tidyverse的select()
函数可读的格式
我试过了
condition <- paste0(c("vara_", "varb_"),rep(1:10, each=2)
data <- data %>% select(a, b, condition)
条件您可以将syms
与一起使用
要在选择功能中按特定顺序拼接列名,请执行以下操作:
> paste0(c("vara_", "varb_"),rep(1:10, each=2))
[1] "vara_1" "varb_1" "vara_2" "varb_2" "vara_3" "varb_3" "vara_4" "varb_4" "vara_5" "varb_5"
[11] "vara_6" "varb_6" "vara_7" "varb_7" "vara_8" "varb_8" "vara_9" "varb_9" "vara_10" "varb_10"
library(rlang)
condition <- paste0(c("vara_", "varb_"),rep(1:10, each=2))
data %>% select(a, b, !!!syms(condition))
# a b vara_1 varb_1 vara_2 varb_2 vara_3 varb_3 vara_4 varb_4 vara_5 varb_5 vara_6 varb_6 vara_7 varb_7 vara_8 varb_8 vara_9 varb_9 vara_10 varb_10
#1 1 2 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 11 21 12 22
您应该使用select_at
而不是select
资料
使用虚拟数据,OP的原始尝试似乎有效:data%>%dplyr::select(a、b、条件)
。我使用的是dplyr 0.7。4@Psidom:感谢这种方法,由于某些原因,r在中返回错误!syms(条件):将此代码与我的数据和伪数据一起使用时,参数类型无效
,仍在找出为什么在我的machine@mt1022事实证明,dplyr0.7.4确实有效,而dplyr0.5.0返回时带有Error:All-select()输入必须解析为整数列位置。
谢谢您提供的信息
thesecols <- c("a", "b", paste0(c("vara_", "varb_"),rep(1:3, each=2)))
library(dplyr)
df %>%
select_at(vars(thesecols))
# a b vara_1 varb_1 vara_2 varb_2 vara_3 varb_3
# 1 100 120 a d b e c f