[R] Writing do and resample functions

Erich Neuwirth erich.neuwirth at univie.ac.at
Tue Jan 4 13:30:07 CET 2011


It seems that the textbook workspace you are using as a method
definition for * for class repeater. Load the workspace and try
methods(`*`)
If you get something like '*.repeater' this suspicion is confirmed


On 1/4/2011 11:36 AM, Ben Ward wrote:
> Hi,
> 
> I'm trying to take a function from a workspace download provided in a
> stats textbook book, so I have it in my workspace to use all the time.
> 
> I opened the workspace and typed the names of the two functions to get
> the code that makes them up:
> -------------------------------------------------------------------------------------
> 
>> resample
> function(d, size, replace=TRUE,prob=NULL,within=NULL) {
>   if (!is.null(within)) return( resample.within(d,
> within,replace=replace) )
>   if (is.null(dim(d))) {
>      # it's just a vector
>      if (missing(size)) size=length(d)
>         return( d[ sample(1:length(d),size, replace=replace, prob=prob)])
>   }
>   else {
>      if (missing(size)) size = dim(d)[1];
>      inds = sample(1:(dim(d))[1], size, replace=replace, prob=prob)
>      if (is.data.frame(d) | is.matrix(d)) {
>         return(d[inds,]);
>      } else {
>         return(d[inds]);
>      }
>   }
> }
> -------------------------------------------------------------------------------------
> 
>> do
> function(n=10){
>   as.repeater(n)
> }
> -------------------------------------------------------------------------------------
> 
>> as.repeater
> function(n=5){
>   foo = list(n=n)
>   class(foo) = 'repeater'
>   return(foo)
> }
> 
> Then I made the functions in my workspace by choosing the name (same
> name), and then "=" and then copied and pasted the function, beginning
> with function( and ending with the final }'s.
> 
> But when I try to do the following in my workspace afterwards:
> 
> samps = do(500)* coef(lm(MIC.~1+Challenge+Cleaner+Replicate,
> data=resample(ecoli)))
> sd(samps)
> 
> I get an error:
> Error in do(500) * coef(lm(MIC. ~ 1 + Challenge + Cleaner + Replicate,  :
> non-numeric argument to binary operator.
> 
> But in the workspace that comes with that book, I get a decent output:
> 
> sd(samps)
>     (Intercept)       Challenge   CleanerGarlic  ReplicateFirst
> ReplicateFourth
>       3.9455401       0.7178385       1.6830641       5.4564926      
> 5.4320998
> ReplicateSecond  ReplicateThird
>       5.3895562       5.5422622
> 
> Is there anybody out there who know a lot more about programming
> functions in R than I do, that might know why this is giving me the
> error? I don't understand why one workspace would accept the model
> formula, when the other give me the non-numeric argument to binary
> vector, the only vector that's not numerical is Replicate, but I don't
> that's what the error is talking about.
> 
> Thanks,
> Ben Ward.
> 
> ______________________________________________
> 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