As the help page says

     If some of the values are not vectors of the appropriate length,
     you deserve whatever you get!

So you can use

mtcars1 <- mtcars
mtcars1[c("t1", "t2")] <- cbind(rep(3,32), rep(4, 32))

or even

mtcars1 <- transform(mtcars, t1=rep(3, 32), t2=rep(4, 32))

Vitalie Spinu wrote:
Dear useRs,

Here is a weird behavior of transform function:

  mtcars1<-matcars
  transform(mtcars1,t1=3,t2=4)
Error in data.frame(`_data`, e[!matched]) :
  arguments imply differing number of rows: 32, 1

instead, this works:

  mtcars1$t1<-0
  transform(mtcars1,t1=3,t2=4)

also works if applied in turn:

  transform(mtcars1,t1=3)
  transform(mtcars1,t2=4)

'works'?  Only if you assign the result.

I often need to use this for creating new variables in data frame from those already present.
Sorely needed!!

Just learn to use indexing: transform() is just syntactic sugar that you are not making use of.

Best,
Vitalie.


--
Brian D. Ripley,                  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
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.

Reply via email to