多个部分字符串中的一个与R匹配
我有一个多个部分字符串中的一个与R匹配,r,regex,dataframe,R,Regex,Dataframe,我有一个data.frame,其中一列有名称,一些名称后面有一个括号中的字母字符串。我想删除这些行。例如: > df Name x1 x2 1 Michael (ACBFED) 3 5 2 Mickey (A) 4 1 3 Mike 2 7 4 Mick (RC) 8 6 我最终想要: Name x1 x2 3 M
data.frame
,其中一列有名称,一些名称后面有一个括号中的字母字符串。我想删除这些行。例如:
> df
Name x1 x2
1 Michael (ACBFED) 3 5
2 Mickey (A) 4 1
3 Mike 2 7
4 Mick (RC) 8 6
我最终想要:
Name x1 x2
3 Mike 2 7
每个字符串都以“(A”或“(R)”开头,所以我想我可以使用grep来查找“(A”或“(R)”,但我得到一个错误,说我缺少相应的“)”。如何限制搜索以括号开头和结尾的toba字符串
提前感谢!假设我们有一个
data.frame
如下:
data <- data.frame(name=c("What", "Where (A)", "When (B)", "Why"), x1=1:4, x2=9:6)
> data
name x1 x2
1 What 1 9
2 Where (A) 2 8
3 When (B) 3 7
4 Why 4 6
不起作用,因为(
在正则表达式中有特殊含义。我们需要用\\
转义该字符:
> data[grep("\\(.*?\\)", data$name), ]
name x1 x2
2 Where (A) 2 8
3 When (B) 3 7
注意:*?\\)
这里的意思是匹配任意数量的符号,直到第一次关闭)
这可以工作,但会选择带有()
的行,而不是将其删除。我们可以添加invert=TRUE
以获得所需的内容:
> data[grep("\\(.*?\\)", data$name, invert=TRUE), ]
name x1 x2
1 What 1 9
4 Why 4 6
假设我们有一个像这样的
data.frame
:
data <- data.frame(name=c("What", "Where (A)", "When (B)", "Why"), x1=1:4, x2=9:6)
> data
name x1 x2
1 What 1 9
2 Where (A) 2 8
3 When (B) 3 7
4 Why 4 6
不起作用,因为(
在正则表达式中有特殊含义。我们需要用\\
转义该字符:
> data[grep("\\(.*?\\)", data$name), ]
name x1 x2
2 Where (A) 2 8
3 When (B) 3 7
注意:*?\\)
这里的意思是匹配任意数量的符号,直到第一次关闭)
这可以工作,但会选择带有()
的行,而不是将其删除。我们可以添加invert=TRUE
以获得所需的内容:
> data[grep("\\(.*?\\)", data$name, invert=TRUE), ]
name x1 x2
1 What 1 9
4 Why 4 6
请提供您迄今为止编写的代码,以便我们能够帮助您了解哪里出了问题。请提供您迄今为止编写的代码,以便我们能够帮助您了解哪里出了问题。