[R] How to "apply" correctly.

Patrick Burns pburns at pburns.seanet.com
Tue Jan 7 19:32:32 CET 2014


I think you will be okay if you change
one line to:

defMat<-sapply(defData[,-1, drop=FALSE], function(x) breakUpFun(freq, x))

In your example that doesn't work you are
ending up with a vector rather than a one
column data frame.

Pat


On 07/01/2014 17:44, Keith S Weintraub wrote:
> Folks,
>
> # I have the following function:
>
> breakByFreq<-function(freq, defData) {
>    breakUpFun<-function(freq, defs) {
>      if(freq != 1) {
>        defs<-diff(c(0, defs))
>        defs<-cumsum(rep(defs/freq, each = freq))
>      }
>      defs
>    }
>    defMat<-sapply(defData[,-1], function(x) breakUpFun(freq, x))
>    data.frame(Year = 1:nrow(defMat), defMat)
> }
>
> # And this data (year column and then 2 columns of data):
>
> dum<-structure(list(Year = 1:10,
>              c1 = c(0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1),
>              c2 = c(0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2)),
> .Names = c("Year", "c1", "c2"), row.names = c(NA, -10L), class = "data.frame")
>
> # This works:
> breakByFreq(1, dum)
>
> # This doesn't:
> breakByFreq(1, dum[,-3])
>
>
> # How do I use and choose the appropriate apply function to make this work when there is one and or more columns to be "processed".
>
> Thanks for your time,
> KW
>
>
>
> --
>
> ______________________________________________
> 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.
>

-- 
Patrick Burns
pburns at pburns.seanet.com
twitter: @burnsstat @portfolioprobe
http://www.portfolioprobe.com/blog
http://www.burns-stat.com
(home of:
  'Impatient R'
  'The R Inferno'
  'Tao Te Programming')




More information about the R-help mailing list