R - grep删除UPPER案例行

时间:2016-09-29 16:06:23

标签: r grep

我想删除包含大写单词的所有行。

我的数据如下:

 ssh://git@github.com:lifegadget/ui-animate.git

我不明白为什么这不起作用

                                      dt
1        TRAVEL AND UNSPECIFIED TIME USE
2                      TRAVEL BY PURPOSE
3 Travel related to unspecified time use
4    Travel related to personal business

因为奇怪的是,当我在dt[-c(grep('[A-Z]', dt$dt)) , ] 上生成随机数据时,它会起作用:

mtcars

有人可以帮助我吗?

l = sample( c(letters[1:16], LETTERS[1:16]) ) 
mtcars$code = l
mtcars[-c( grep('[A-Z]', mtcars$code) ) , ] 

1 个答案:

答案 0 :(得分:3)

除了资本字母,还有空格,因此我们可以匹配一个或多个大写字母,包括空格([A-Z ]+)从字符串的开头(^)到结尾({{1} }}在$中,并且否定(grepl)返回包含小写或小写大写(混合)或所有其他可能性的元素。

!

在OP的另一个例子' l'中,每个字符串只有一个字符。因此,使用dt[!grepl("^[A-Z ]+$",dt$dt),, drop = FALSE] # dt #3 Travel related to unspecified time use #4 Travel related to personal business 时,最好不要使用[A-Z]。例如,假设我们有一个包含所有元素的向量

的向量
-

作为

v1 <- c('a', 'aB', 'b')
v1[-grep("^[A-Z]+$", v1)]
#character(0)

然而,否定(grep("^[A-Z]+$", v1) #integer(0) )将获得预期的输出

!