[R] how to delete specific rows in a data frame where the first column matches any string from a list
Wacek Kusnierczyk
Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Fri Feb 6 17:00:42 CET 2009
Laura Rodriguez Murillo wrote:
> Hi,
>
> I'm new in the mailing list but I would appreciate if you could help
> me with this:
> I have a big matrix from where I need to delete specific rows. The
> second entry on these rows to delete should match any string within a
> list (other file with just one column).
> Thank you so much!
>
>
here's one way to do it, illustrated with dummy data:
# dummy character matrix
data = matrix(replicate(20, paste(sample(letters, 20), collapse="")),
ncol=2)
# filter out rows where second column does not match 'a'
data[-grep('a', d[,2]),]
this will work also if your data is actually a data frame:
data = as.data.frame(data)
data[-grep('a', d[,2]),]
note, due to a known issue with grep, this won't work correctly if there
are *no* rows that do *not* match the pattern:
data[-grep('1', d[,2]),]
# should return all of data, but returns an empty matrix
with the upcoming version of r, grep will have an additional argument
which will make this problem easy to fix:
data[grep('a', d[,2], invert=TRUE),]
vQ
More information about the R-help
mailing list