Sometimes we try to make things behave the way we think they ought to and find 
it surprisingly difficult. Later we discover that our original premise was 
flawed and we wasted our time trying to force fit our ideas to work.

Since all of the i-th elements of the columns of a data table are supposed to 
correspond to each other, the information content of adding a value 
corresponding to a bunch of NAs is practically zero, so that the value of the 
effort put into doing so is practically zero as well.

If your information relationships are really this sparse you may be better off 
assembling your data in "melted" form to begin with (c.f. "melt" in package 
"reshape"). Alternately, perhaps you should be creating multiple data frames 
(and optionally using "merge" to bring them all together later).

If there is no implied correspondence between the i-th elements in each vector, 
perhaps you should just be using named elements in a list to hold the vectors 
instead of using a data frame.

"Ralf B" <ralf.bie...@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.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.

______________________________________________
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