Re: [R] inplace assignment: solution

2006-06-20 Thread David Hugh-Jones
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

2006-06-16 Thread David Hugh-Jones
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

2006-06-16 Thread Adaikalavan Ramasamy
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

2006-06-16 Thread David Hugh-Jones
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