[R] How to replace a column in a data frame with another one with a different size

Stathis Kamperis ekamperi at gmail.com
Sun Jul 8 16:31:58 CEST 2012


Hello everyone,

I have a dataframe with 1 column and I'd like to replace that column
with a moving average.
Example:

> library('zoo')
> mydat <- seq_len(10)
> mydat
 [1]  1  2  3  4  5  6  7  8  9 10
> df <- data.frame("V1" = mydat)
> df
   V1
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10 10
> df[df$V1 <- rollapply(df$V1, 3, mean)]
Error in `$<-.data.frame`(`*tmp*`, "V1", value = c(2, 3, 4, 5, 6, 7, 8,  :
  replacement has 8 rows, data has 10
>

I could use a temporary variable to store the results of rollapply()
and then reconstruct the data frame, but I was wondering if there is a
one-liner that can achieve the same thing.

Best regards,
Stathis

P.S. If you don't mind, cc me at your reply because I'm not subscribed
to the list (but I will check the archive anyway).



More information about the R-help mailing list