2015-11-16 72 views
1

我的数据在is.na使用正则表达式()

aabc <- c(1:10) 
bbdef <- c(11:20) 
ccghj <- letters[1:10] 
ddjkl <- LETTERS[11:20] 
eemno <- c(NA, NA, 100, 200, 300, NA, 800, 900, NA, 400) 

myDf <- data.frame(aabc, bbdef, ccghj, ddjkl, eemno) 

现在我想从某列(eemno)删除与NA行。

myDf[!is.na(myDf$eemno), ] 

但是,使用正则表达式不起作用。

myDf[!is.na(grepl("mno", names(myDf))), ] 

任何想法为什么?

+1

这两个代码是不同的。首先,您正在查看任何“NA”的行。第二,它只是查看列名。 – akrun

+0

@akrun我需要看cnames,因为我想要所有在该列内的NA?! – Stophface

+1

'grepl(“mno”,names(myDf))'是逻辑向量而不是data.frame的列。 – Roland

回答

1

根据grep对行进行子集划分的一个选项是对列进行子集划分,然后使用is.na来对行进行子集划分。

myDf[!is.na(myDf[,grep("mno", names(myDf))]),]