我想删除包含大写单词的所有行。
我的数据如下:
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) ) , ]
答案 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)
)将获得预期的输出
!