我可以在字符列表中搜索字符串,我不知道该字符串是如何装入的吗?或者更一般地说,我正在尝试引用数据框中的列,但我不确切知道列是如何填充的.我的想法是以names(myDataFrame)不区分大小写的方式搜索以返回列的正确外壳.
Far*_*rel 42
我建议使用这个grep()函数和一些额外的参数,这些参数使得它很愉快.
grep("stringofinterest",names(dataframeofinterest),ignore.case=TRUE,value=TRUE)
Run Code Online (Sandbox Code Playgroud)
如果没有参数,value=TRUE您将只获得匹配发生的索引位置向量.
Ani*_*iko 32
假设没有变量名称仅在大小写上有所不同,您可以在以下位置搜索全小写变量名称tolower(names(myDataFrame)):
match("b", tolower(c("A","B","C")))
[1] 2
Run Code Online (Sandbox Code Playgroud)
这只会产生完全匹配,但在这种情况下可能是理想的.
对于任何将其与 一起使用的人,只需在右侧(或两侧)%in%使用,如下所示:tolower
"b" %in% c("a", "B", "c")
# [1] FALSE
tolower("b") %in% tolower(c("a", "B", "c"))
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)
使用该stringr包,您可以使用其中一个内置修饰符函数修改模式(请参阅"?修饰符").例如,因为我们匹配固定字符串(没有特殊的正则表达式字符)但想要忽略大小写,我们可以这样做
str_detect(colnames(iris), fixed("species", ignore_case=TRUE))
Run Code Online (Sandbox Code Playgroud)
或者您可以使用(?i)不区分大小写的修饰符
str_detect(colnames(iris), "(?i)species")
Run Code Online (Sandbox Code Playgroud)