2017-09-14 91 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