[R] Adding collumn to existing data frame

Joshua Wiley jwiley.psych at gmail.com
Wed Aug 4 02:47:10 CEST 2010


On Tue, Aug 3, 2010 at 5:32 PM, Ralf B <ralf.bierig at 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:

The existing way is fairly flexible, just name the new data...

> mydf <- data.frame(a = c(1, 2, 3) )
> cbind(mydf, c = c(4, 5, 6) )
  a c
1 1 4
2 2 5
3 3 6

I do not have any good suggestions for extending the data with NAs if
the row lengths do not match.

Josh

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



-- 
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/



More information about the R-help mailing list