2011-04-15 64 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")