[R] How to fill out some columns?

markleeds at verizon.net markleeds at verizon.net
Fri Apr 11 23:49:33 CEST 2008


>From: Jorge Velez <jorgeivanvelez at gmail.com>
>Date: 2008/04/11 Fri PM 04:36:58 CDT
>To: R <r-help at r-project.org>
>Subject: [R] How to fill out some columns?

below works but my guess is that there's a better
way.

set.seed(4)
dx=matrix(rnorm(6*5),ncol=6)
colnames(dx)=LETTERS[1:6]

dy=matrix(rnorm(3*5),ncol=3)
colnames(dy)=c('A','C','E')

sapply(colnames(dx), function(.colname) {
  if ( .colname %in% colnames(dy) ) {
    return(dy[,.colname])
  } else {
    return(numeric(nrow(dy)))
  }
})


>Dear R users,
>
>I'm working with 2 data sets which look like (for example) dx and dy in the
>next code:
>
># Seed
>set.seed(4)
>
># First data frame
>dx=matrix(rnorm(6*5),ncol=6)
>colnames(dx)=LETTERS[1:6]
>
># Second data frame
>dy=matrix(rnorm(3*5),ncol=3)
>colnames(dy)=c('A','C','E')
>
>
>As you will notice, some columns in both data sets have the same names. At
>the end, what I need is something like:
>
>
>> res
>              A B          C D          E F
>[1,]  0.1534642 0 -0.4045198 0  1.3437086 0
>[2,]  1.0519326 0 -0.2274054 0  0.1815354 0
>[3,] -0.7542112 0  0.9340962 0  1.2925123 0
>[4,] -1.4821891 0 -0.4658959 0 -1.6880486 0
>[5,]  0.8611319 0 -0.6375435 0 -0.8209936 0
>
>
>where  columns "A", "C" and "E" are the dy columns and columns "B" and "D"
>are zeros because, when we compare dx and dy, they are not present. Any
>suggestion would be greatly appreciated.
>
>Thanks in advance,
>
>
>Jorge
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>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.



More information about the R-help mailing list