Re: [R] inplace assignment: solution
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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@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 __ R-help@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
[R] inplace assignment
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@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
Re: [R] inplace assignment
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@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 __ R-help@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
Re: [R] inplace assignment
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 [EMAIL PROTECTED] 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@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 __ R-help@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