On Mon, 2010-07-19 at 19:46 -0400, David Winsemius wrote: > On Jul 19, 2010, at 7:16 PM, Christian Raschke wrote: > > > Dear R-Listers, > > > > My question concerns indexing vectors by logical vectors that are > > based on the original vector. Consider the following simple example > > to hopefully make clear what I mean: > > > > a <- rnorm(10) > > a[a<0] <- NA > > > > However, I am now working with multiple data frames that I received, > > where each of them has nicely descriptive, yet long names(). In my > > scripts there are many instances where operations similar to the one > > above are required. Again a simple example: > > > > > > some.data.frame <- data.frame(some.long.variable.name=rnorm(10), > > some.other.long.variable.name=rnorm(10)) > > > > some.data.frame$some.other.long.variable.name[some.data.frame > > $some.other.long.variable.name < 0] <- NA > > > > > > The fact that the names are so long makes things not very readable > > in the script and hard to debug. Is there a way in R to refer to the > > "self" of whatever is being indexed? I am looking for something like > > > > some.data.frame$some.other.long.variable.name[.self < 0] <- NA > > There is an alternative, "is.na()<-" which I think is a bit more > readable: > > is.na($some.other.long.variable.name) <- some.data.frame > $some.other.long.variable.name < 0
Thanks, David! As written, this throws and error. However, is.na(some.data.frame$some.other.long.variable.name) <- some.data.frame $some.other.long.variable.name < 0 works, but does not seem like much of an improvement to me. > > But do _not_ do: > > with(some.data.frame, is.na(some.other.long.variable.name) <- > some.other.long.variable.name < 0 ) > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.