dplyr::以参数开始\u,以基于参数的not子集结束\u

dplyr::以参数开始\u,以基于参数的not子集结束\u,r,dplyr,tidyverse,startswith,ends-with,R,Dplyr,Tidyverse,Startswith,Ends With,我想根据它们的名称选择一些变量来转换它们。变量名都以inq开头,以7、8、10、13:15结尾。这对我不起作用。。。很抱歉,如果这是显而易见的,但我无法让它工作。我是否使用了错误的函数,将函数和参数放在一起是错误的,还是其他什么 一个可重复的例子: 结构列表inq1_1=cNA,7,5,1,1,6,5,2,NA,NA,inq1_2=cNA, 7,5,1,1,6,5,5,NA,NA,inq1_3=cNA,6,4,2,1,5,2, 1,NA,NA,inq1_4=cNA,6,6,1,1,6,5,1,N

我想根据它们的名称选择一些变量来转换它们。变量名都以inq开头,以7、8、10、13:15结尾。这对我不起作用。。。很抱歉,如果这是显而易见的,但我无法让它工作。我是否使用了错误的函数,将函数和参数放在一起是错误的,还是其他什么

一个可重复的例子:

结构列表inq1_1=cNA,7,5,1,1,6,5,2,NA,NA,inq1_2=cNA, 7,5,1,1,6,5,5,NA,NA,inq1_3=cNA,6,4,2,1,5,2, 1,NA,NA,inq1_4=cNA,6,6,1,1,6,5,1,NA,NA,inq1_5=cNA, 7,3,1,1,6,2,1,NA,NA,inq1_6=cNA,7,4,4,2,7,2, 4,NA,NA,inq1_7=cNA,2,4,6,7,3,1,7,NA,NA,inq1_8=cNA, 1,NA,2,7,2,1,4,NA,NA,inq1_9=cNA,4,6,3,1,3, 7,1,NA,NA,inq1_10=cNA,3,5,7,4,4,2,7,NA,NA, inq1_11=cNA,5,4,7,1,6,7,6,NA,NA,inq1_12=cNA, 7,5,7,4,6,7,2,NA,NA,inq1_13=cNA,3,4,6,4, 3,4,4,NA,NA,inq1_14=cNA,3,2,4,4,2,1,4,NA, NA,inq1_15=cNA,2,2,3,5,2,4,4,NA,NA,inqfinal_1=c5, NA,3,NA,NA,NA,NA,NA,NA,inqfinal_2=c5,NA, 3,NA,NA,NA,NA,NA,NA,inqfinal_3=c6,NA,3, NA,NA,NA,NA,NA,NA,inqfinal_4=c5,NA,3,NA, NA,NA,NA,NA,NA,inqfinal_5=c5,NA,3,NA,NA, NA,NA,NA,NA,NA,inqfinal_6=c6,NA,3,NA,NA,NA,NA, NA,NA,NA,NA,inqfinal_7=c4,NA,3,NA,NA,NA,NA, NA,NA,NA,inqfinal_8=c2,NA,3,NA,NA,NA,NA,NA, NA,NA,inqfinal_9=c5,NA,3,NA,NA,NA,NA,NA, NA,inqfinal_10=c4,NA,3,NA,NA,NA,NA,NA,NA ,inqfinal_11=c6,NA,4,NA,NA,NA,NA,NA,NA,NA, inqfinal_12=c6,NA,4,NA,NA,NA,NA,NA,NA,NA,inqfinal_13=c4, NA,3,NA,NA,NA,NA,NA,NA,inqfinal_14=c2,NA, 2,NA,NA,NA,NA,NA,NA,inqfinal_15=c2,NA,2, NA,NA,NA,NA,NA,NA,row.NAME=cNA,-10L,class=ctbl_df, tbl,data.frame 我正试图变得整洁,并按照以下代码使用dplyr:

选择特定列 sf_df%>%selectstarts_with in q, 以7,8,10,13:15%>%viewtitle=测试结束 唉,我得到了以下错误:

以7、8、10、13:15结尾的错误:未使用的参数13:15 14. .f、 x[[i]]。。。 13map.x[sel],.f。。。 12map\u ifind\u列表,是否为帮助程序,评估是否整洁 11变量选择变量评估变量,quos 10tidyselect::vars\u selectnames.data!!!库斯。。。 9选择.data.frame.,以Q开始,以7、8、10、13:15结束 8.选择,以Q开始,以7、8、10、13:15结束 7.函数列表[[i]]值 6.freducevalue,`u函数\u列表` 5. `_fseq``` uLHS` 4.评估``fseq```lhs`,环境,环境 3.评估``fseq```lhs`,环境,环境 2.使用VisibleValquote``u fseq```u lhs`,env,env 1.sf_df%>%selectstarts_with in q,end_with 7,8,10,13:15%>%viewtitle=test 任何帮助都将不胜感激!先谢谢你

干杯, Atanas。

更好的选择是匹配列名中的正则表达式模式。在这里,它匹配列名开头^处的模式“ing”和列名结尾$处的数字

sf_df %>% 
    select(matches('^inq.*(7|8|10|13|14|15)$'))
# A tibble: 10 x 12
#   inq1_7 inq1_8 inq1_10 inq1_13 inq1_14 inq1_15 inqfinal_7 inqfinal_8 inqfinal_10 inqfinal_13 inqfinal_14 inqfinal_15
#    <dbl>  <dbl>   <dbl>   <dbl>   <dbl>   <dbl>      <dbl>      <dbl>       <dbl>       <dbl>       <dbl>       <dbl>
# 1     NA     NA      NA      NA      NA      NA          4          2           4           4           2           2
# 2      2      1       3       3       3       2         NA         NA          NA          NA          NA          NA
# 3      4     NA       5       4       2       2          3          3           3           3           2           2
# 4      6      2       7       6       4       3         NA         NA          NA          NA          NA          NA
# 5      7      7       4       4       4       5         NA         NA          NA          NA          NA          NA
# 6      3      2       4       3       2       2         NA         NA          NA          NA          NA          NA
# 7      1      1       2       4       1       4         NA         NA          NA          NA          NA          NA
# 8      7      4       7       4       4       4         NA         NA          NA          NA          NA          NA
# 9     NA     NA      NA      NA      NA      NA         NA         NA          NA          NA          NA          NA
#10     NA     NA      NA      NA      NA      NA         NA         NA          NA          NA          NA          NA
它不会删除字符串中与5不匹配的列

这并不是一种按顺序排列的行为

sf_df %>%
  select(ends_with("5"), starts_with("inq")) %>%
  ncol
#[1] 30
现在,如果我们只使用

根据该示例,所有列都以“inq”开头,因此,ends_with单独用于单个字符串匹配就足够了,正如?ends_with的文档所指定的那样

匹配-字符串

而不是多个字符串

用法在哪里

以匹配开始,忽略。case=TRUE,vars=peek\u vars

更好的选择是匹配列名中的正则表达式模式。在这里,它匹配列名开头^处的模式“ing”和列名结尾$处的数字

sf_df %>% 
    select(matches('^inq.*(7|8|10|13|14|15)$'))
# A tibble: 10 x 12
#   inq1_7 inq1_8 inq1_10 inq1_13 inq1_14 inq1_15 inqfinal_7 inqfinal_8 inqfinal_10 inqfinal_13 inqfinal_14 inqfinal_15
#    <dbl>  <dbl>   <dbl>   <dbl>   <dbl>   <dbl>      <dbl>      <dbl>       <dbl>       <dbl>       <dbl>       <dbl>
# 1     NA     NA      NA      NA      NA      NA          4          2           4           4           2           2
# 2      2      1       3       3       3       2         NA         NA          NA          NA          NA          NA
# 3      4     NA       5       4       2       2          3          3           3           3           2           2
# 4      6      2       7       6       4       3         NA         NA          NA          NA          NA          NA
# 5      7      7       4       4       4       5         NA         NA          NA          NA          NA          NA
# 6      3      2       4       3       2       2         NA         NA          NA          NA          NA          NA
# 7      1      1       2       4       1       4         NA         NA          NA          NA          NA          NA
# 8      7      4       7       4       4       4         NA         NA          NA          NA          NA          NA
# 9     NA     NA      NA      NA      NA      NA         NA         NA          NA          NA          NA          NA
#10     NA     NA      NA      NA      NA      NA         NA         NA          NA          NA          NA          NA
它不会删除字符串中与5不匹配的列

这并不是一种按顺序排列的行为

sf_df %>%
  select(ends_with("5"), starts_with("inq")) %>%
  ncol
#[1] 30
现在,如果我们只使用

根据该示例,所有列都以“inq”开头,因此,ends_with单独用于单个字符串匹配就足够了,正如?ends_with的文档所指定的那样

匹配-字符串

而不是多个字符串

用法在哪里

以匹配开始,忽略。case=TRUE,vars=peek\u vars