R 如何仅查找包含特定字符的列
我希望获得包含特定字符的列列表,例如,我有一个数据框对象:R 如何仅查找包含特定字符的列,r,list,dataframe,R,List,Dataframe,我希望获得包含特定字符的列列表,例如,我有一个数据框对象: dat <- read.table(text = " TargetVar Tar_Var1 Var2 Var3 0 0 0 7 0 0 1 1 0 1 0 3 0 1 1 7 1 0 0
dat <- read.table(text = " TargetVar Tar_Var1 Var2 Var3
0 0 0 7
0 0 1 1
0 1 0 3
0 1 1 7
1 0 0 5
1 0 1 1
1 1 0 0
1 1 1 6
0 0 0 8
0 0 1 5
1 1 1 4
0 0 1 2
1 0 0 9
1 1 1 2 ", header = TRUE)
dat使用grep
或grepl
如下:
colnames(dat)[grepl("Tar", colnames(dat))]
## > colnames(dat)[grepl("Tar", colnames(dat))]
## [1] "TargetVar" "Tar_Var1"
这有助于理解grepl
的作用:
grepl("Tar", colnames(dat))
## [1] TRUE TRUE FALSE FALSE
请注意,您可以通过设置ignore.case=TRUE
使用grep
或grepl
忽略大小写,如下所示:
colnames(dat)[grepl("Tar", colnames(dat))]
## > colnames(dat)[grepl("Tar", colnames(dat))]
## [1] "TargetVar" "Tar_Var1"
这有助于理解grepl
的作用:
grepl("Tar", colnames(dat))
## [1] TRUE TRUE FALSE FALSE
请注意,您可以通过设置ignore.case=TRUE
单向忽略大小写:grep(“^Tar”,names(dat),value=TRUE)
谢谢您,Arun,符号“^s”有什么作用?它是元字符。它确保列名以Tar
开头,这样它就不会找到名为VTar\u robots\u sound
的列。^要求搜索字符串仅在其位于字符串开头时返回匹配项。例如,“^Tar”不会返回与“FirstTarget”匹配的结果,但会返回与变量名匹配的结果。另外一件可能有用的事情是:^也用于否定。例如,“[^0-9]”将匹配除数字0到9之外的任何字符,而“[0-9]”将仅匹配0到9。因此,^的含义取决于上下文。一种方法:grep(“^Tar”,names(dat),value=TRUE)
谢谢你,阿伦,符号^是做什么的?它是一个元字符。它确保列名以Tar
开头,这样它就不会找到名为VTar\u robots\u sound
的列。^要求搜索字符串仅在其位于字符串开头时返回匹配项。例如,“^Tar”不会返回与“FirstTarget”匹配的结果,但会返回与变量名匹配的结果。另外一件可能有用的事情是:^也用于否定。例如,“[^0-9]”将匹配除数字0到9之外的任何字符,而“[0-9]”将仅匹配0到9。因此,^的含义取决于上下文。