2011-04-15 65 views
21

我可以搜索字符列表中的字符串,但我不知道字符串是如何装入的?或者更一般地说,我试图引用数据框中的列,但我不知道列的具体含义。我的想法是以不区分大小写的方式搜索名称(myDataFrame)以返回列的正确框。不区分大小写的R中的列表搜索

回答

21

假设有其不同之处仅在情况下,没有变量名,您可以在tolower(names(myDataFrame))搜索你的全部小写的变量名:

match("b", tolower(c("A","B","C"))) 
[1] 2 

这将产生唯一的精确匹配,但就是在这很可能希望案件。

+0

可搜索的软件包,允许您打开不区分大小写的匹配。 – ctbrown 2017-03-21 10:12:37

27

我会建议grep()功能和它的一些额外的参数,使它很高兴使用。

grep("stringofinterest",names(dataframeofinterest),ignore.case=TRUE,value=TRUE) 

没有参数value=TRUE您只会得到匹配发生的索引位置向量。

1

searchable包被允许用于各种类型的对象中进行搜索的创建:

l <- list(a=1, b=2, c=3) 
sl <- searchable(l)  # make the list "searchable" 
sl <- ignore.case(sl)  # turn on case insensitivity 

> sl['B'] 
$b 
[1] 2 

它与列表和向量和做比简单的区分大小写的匹配多了不少。

0

如果你想在另一组字符串搜索一组字符串,情况不区分大小写,你可以尝试:

s1 = c("a", "b") 
s2 = c("B", "C") 
matches = s1[ toupper(s1) %in% toupper(s2) ] 
0

实现这一目标的另一种方法是使用str_which(string, pattern)stringr包:

library("stringr") 
str_which(string = tolower(colnames(iris)), pattern = "species")