2011-12-27 60 views
3

我有一个数据帧m,我想删除所有行,其中f_name列有入大于3。我以为我可以使用类似的东西来删除所有行字符串的长度为n多

m <- m[-grep("nchar(m$f_name)>3", m$f_name] 
+0

@Umesh Awasthi我不知道这是编辑琐碎真的是必要的。 – joran 2011-12-27 01:37:06

+2

您需要重新说明问题。根据您的代码判断,您不希望删除“f_name列的条目大于3的所有行”。你想删除f_name中字符串长度大于3的行。 – neilfws 2011-12-27 02:16:26

+0

@joran:agree !!但如果这样可以提高可读性,那么在这方面没有任何伤害:) – 2011-12-27 06:00:26

回答

9

要稍微改写你的问题,你想保留行,其中在f_name项目有3个或更少的长度。因此,如何:

subset(m, nchar(as.character(f_name)) <= 3) 
+2

但要小心失误。 – hadley 2011-12-27 02:56:43

+1

@hadely这让我在今天正在调试的代码中。 +1对一个鬼鬼祟祟的问题发出警告。 – 2011-12-27 06:23:14

+1

或在'isTRUE'中包装条件以消除'NA's – aL3xa 2011-12-27 08:39:53

3

试试这个:

m[!nchar(as.character(m$f_name)) > 3, ] 
相关问题