Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
粘贴到tidyverse';s select()_R_Dplyr_Tidyverse - Fatal编程技术网

粘贴到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