3

在下面的示例中,我想删除任何带有“。”的行。在行名中

data<-matrix(nrow=10,ncol=3,1)
 rownames(data)<-c("A.1","B.2",LETTERS[3:10])

我试过这样的grep:

data[( grepl(".", rownames(data))), ]

但是,我认为这里缺少一些东西。我将不胜感激任何帮助谢谢

4

2 回答 2

5

'.'匹配任何字符,因此需要转义。

data <- matrix(nrow=10, ncol=3,1)
rownames(data) <- c("A.1", "B.2", LETTERS[3:10])

data[!grepl('\\.', rownames(data)), ]

  [,1] [,2] [,3]
C    1    1    1
D    1    1    1
E    1    1    1
F    1    1    1
G    1    1    1
H    1    1    1
I    1    1    1
J    1    1    1
于 2013-10-06T22:44:08.027 回答
3

尝试使用:

grep("[.]", x =rownames(data))

例如:

data[( grepl("[.]", rownames(data))), ]

这将返回包含“。”的行。在名字中。

你方法的问题是“。” 是一个元字符。当您将它放在方括号中时,它会变成常规字符。

于 2013-10-06T22:50:28.987 回答