[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