2013-07-31 61 views
3

我需要子集,它包含<three digit number>
我寫查找包含三個數字

foo <- grepl("<^[0-9]{3}$>", log1[,2]) 
others <- log1[!foo,] 

排又一排,但我真的不知道如何使用正則表達式...只是一直在使用備忘單和谷歌。我認爲<和>字符正在拋棄它。

+4

我點擊這個問題只是爲了瞭解「樹形數字」。我很失望,這是一個錯字。 –

回答

3

^$分別表示字符串的開頭和結尾。你不應該在他們之前或之後匹配任何東西。

如果您想要包含該模式的行,則根本不應使用錨。你應該使用這個:<[0-9]{3}>(或縮短到<\\d{3}>

+0

謝謝你的補充,這就是我想要做的,但我得到了這個錯誤:'錯誤:'\ d'是字符串中的一個無法識別的轉義開始「」<\ d「' – camelarms

+0

@camelarms:對不起, r正則表達式不支持數字的簡寫,我會將它切換回'[0-9]'。 –

+1

嘗試用'\\ d'代替 – arshajii

6

你差點沒錢了。嘗試

 
^<[0-9]{3}>$ 

它可能理應你瞭解anchors^$)。

1

只是爲了後代,我認爲我會貢獻什麼,我認爲是OP的暗示答案的陳述問題。

看來OP想要排除第二列包含3位整數的數據幀的行。這可以很容易地完成使用「NCHAR」函數計算中的每個數字的字符數,像這樣:

others <- log1[nchar(log1[,2])!=3,] 

我們只是創造與包含第2列的每一行中的字符數的數組並選擇該行,如果該數字不等於3.