2017-04-23 87 views
1

我的數據集中有幾列以Q(m,n,s)_開頭。我如何從數據集中提取這些列。我試圖使用下面的代碼,但它沒有奏效。我想知道如何解決這個問題。修改了grep函數的代碼

col <-grep("Q(m,n,s)_",names(Data)) 

回答

0

你要逃避這些括號,括號已經在正則表達式的特殊含義,它們被稱爲捕捉組,從而把他們的字面意思我們要逃避他們,這是更好地把列的你們的名字,同時發佈讓一切都可以得到驗證:

grep("Q\\(m,n,s\\)_",names(Data)) 

如果你想有一個合乎邏輯的回報,使用grepl

grepl("Q\\(m,n,s\\)_",names(Data)) 

玩具例子:

x1 <- c("Q(m,n,s)_","a,b,c") 
y1 <- grepl("Q\\(m,n,s\\)_",x1) 

> y1 
[1] TRUE FALSE 
0

比用正則表達式模式摔跤使用fixed = TRUE參數要容易得多:

col <- grep("Q(m,n,s)_", names(Data), fixed = TRUE) 

如果你想在名稱,而不是添加value = TRUE參數:

col <- grep("Q(m,n,s)_", names(Data), fixed = TRUE, value = TRUE) 
+1

非常感謝您的出色解決方案。 – david