2017-09-14 89 views
0

我試圖從該矢量中提取不以「C」或「B」開頭的國家的名稱。根據規則從矢量中提取數據R

vec <- c("Colombia", "Chile", "Brazil", "Ecuador", "Peru", "Mexico")

這適用於僅C或B:

vec[substring(vec,1,1) != 'C'] 

我想這兩種情況結合起來,但這不起作用

vec[(substring(vec,1,1) != 'C') | (substring(vec,1,1) != 'P')] 

我如何結合這兩個條件在一個聲明?

+0

它不應該是'的&''而不是|'? 'vec [(substring(vec,1,1)!='C')&(substring(vec,1,1)!='P')]' –

+0

使用正則表達式的東西雖然會更整齊。請參閱[這裏](https://stackoverflow.com/questions/8438173/r-regex-match-strings-not-beginning-with-a-pattern)的想法。 –

回答

2

這不是你要找的嗎?

vec[!substring(vec, 1, 1) %in% c("B", "C")] 
1

您可以使用此grep

vec[grep("^[^CP]",vec)] 
+1

你也可以使用'value = TRUE',所以你甚至不需要子集:'grep('^ [^ CP]',vec,value = TRUE)' – alistaire