I worked this out over the weekend. I appreciate that using temporary variables would be simpler but I think this makes for quite readable code: # in RProfile.site inplace <- function (f, arg=1) eval.parent(call("<-",substitute(f)[[arg+1]], f),2) # examples in code inplace(foo[bar,baz] *2) # or inplace(paste(foo[bar,baz], 1:10)) # or inplace(sub("blah", "bleh", foo[bar,baz]), 3) cheers Dave On 16/06/06, David Hugh-Jones <davidhughjones at gmail.com> wrote:> It's more a general point about having to write things out twice when > you do assignments. I could also have written: > > data.frame[some.condition & another.condition, big.list.of.columns] <- > data.frame[some.condition & another.condition, big.list.of.columns] * 2 + 55 > > or anything else. Equally, there could be any method of subsetting, or > any expression that can be an assignment target, on the left hand > side: > > data.frame[[some.complex.expression.for.columnames]] > <-data.frame[[some.complex.expression.for.columnames]] * 333 + foo * > 56 > > rownames(matrix)[45:53] <- paste(rownames(matrix)[45:53], "blah") > > > David > > On 16/06/06, Adaikalavan Ramasamy <ramasamy at cancer.org.uk> wrote: > > I do not fully understand your question but how about : > > > > inplace <- function( df, cond1, cond2, cols, suffix ){ > > > > w <- which( cond1 & cond2 ) > > df <- df[ w, cols ] > > paste(df, suffix) > > return(df) > > } > > > > > > BTW, did you mean "colnames(df) <- paste(colnames(df), suffix)" instead > > of "paste(df, suffix)" ? > > > > Regards, Adai > > > > > > > > On Fri, 2006-06-16 at 10:23 +0100, David Hugh-Jones wrote: > > > I get tired of writing, e.g. > > > > > > > > > data.frame[some.condition & another.condition, big.list.of.columns] <- > > > paste(data.frame[some.condition & another.condition, > > > big.list.of.columns], "foobar") > > > > > > > > > I would a function like: > > > > > > inplace(paste(data.frame[some.condition & another.condition, > > > big.list.of.columns], "foobar")) > > > > > > which would take the first argument of the inner function and assign > > > the function's result to it. > > > > > > Has anyone done something like this? Are there simple alternative > > > solutions that I'm missing? > > > > > > Cheers > > > David > > > > > > ______________________________________________ > > > R-help at stat.math.ethz.ch mailing list > > > https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > > > > > > >