[R] An apply and rep question
Gabor Grothendieck
ggrothendieck at gmail.com
Fri Aug 11 21:01:52 CEST 2006
The approach here is to perform the repetition on the indices (or rownames)
rather than on the data frame directly. Using the builtin data frame BOD
any of the following would work:
BOD[gl(nrow(BOD), 2),]
BOD[rep(1:nrow(BOD), each = 2),]
BOD[rep(rownames(BOD), each = 2),]
On 8/11/06, Horace Tso <Horace.Tso at pgn.com> wrote:
> Hi list,
>
> I'm sure the explanation must be laughably simple to the experts out
> there, but I just could figure it out. I have a simple data frame that
> looks like,
>
> >head(da.off)
> DDate OffP
> 1 2005-01-01 41.23
> 2 2005-01-02 44.86
> 3 2005-01-03 44.86
> 4 2005-01-04 43.01
> 5 2005-01-05 45.47
> 6 2005-01-06 48.62
>
> where the first column DDate currently is character, and OffP is
> numeric.
>
> I want to duplicate every row 2 times, so I thought I use apply(),
>
> x <- apply(da.off, 2, rep, each=2)
>
> The result is a matrix of all character,
>
> head(x)
> DDate OffP
> 1 "2005-01-01" " 41.23"
> 1 "2005-01-01" " 41.23"
> 2 "2005-01-02" " 44.86"
> 2 "2005-01-02" " 44.86"
> 3 "2005-01-03" " 44.86"
> 3 "2005-01-03" " 44.86"
>
> To convert it back to numeric, I did
>
> x <- as.data.frame(x)
> x$OffP <- as.numeric(x$OffP)
>
> However, the OffP column didn't convert correctly, a mystery since they
> "look" quite alright above. (I know, I know, there seems to be a space
> there. But why?)
>
> head(x)
> DDate OffP
> 1 2005-01-01 150
> 1.1 2005-01-01 150
> 2 2005-01-02 202
> 2.1 2005-01-02 202
> 3 2005-01-03 202
> 3.1 2005-01-03 202
>
> Is this the wrong way to use apply or rep?
>
> Horace
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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