Try this:

new.col <- 1:2
transform(df, myNewColumn2 = new.col[1:nrow(df)])

On Tue, Aug 3, 2010 at 9:32 PM, Ralf B <ralf.bierig@gmail.com> wrote:

> Hi experts,
>
> I am trying to write a very flexible method that allows me to add a
> new column to an existing data frame. This is what I have so far:
>
> add.column <- function(df, new.col, name) {
>        n.row <- dim(df)[1]
>        length(new.col) <- n.row
>        names(new.col) <- name
>        return(cbind(df, new.col))
> }
>
> df <- NULL
> df <- data.frame(a=c(1,2,3))
> df
> # corect: added NA to new collumn
> df <- add.column(df,c(1,2),'myNewColumn2')
> df
> # problem: not added, data frame should be extended with NAs
> add.column(df,c(1,2,3,4),'myNewColumn3')
> df
>
>
> However, there are two problems:
>
> 1) The column name is not renamed accurately but always set to
> 'new.col' . Surely this could be done outside the function, but it
> would be better if its self contained.
> 2) It does not work for cases where new.col is longer than the length
> of the data frame. In such cases, I would like to add NA's to the data
> frame if it has less rows.
>
> Any ideas to to solve this?
>
> Ralf
>
> ______________________________________________
> 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.
>



-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O

	[[alternative HTML version deleted]]

