# [R] Writing do and resample functions

Ben Ward benjamin.ward at bathspa.org
Tue Jan 4 11:36:25 CET 2011

```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);
inds = sample(1:(dim(d)), 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.

```