should be there now
Seth Falcon wrote:> A colleague sent me the following:
>
> If you specify probabilities in the 'sample' function and
forget
> to type 'prob=...', then you get nonsense. E.g.
>
> sample(1:10,1,c(0,0,0,0,1,0,0,0,0,0))
>
> does not filter '5', while
>
> sample(1:10,1,prob=c(0,0,0,0,1,0,0,0,0,0))
>
> does it correctly. I wish this would return an error because the
> 'replace' argument should only take logical args. Anyway, it is
> easy to make this mistake and having it produce an error would be
> nice.
>
> Assuming there is not a use-case for specifying a logical vector for
> the 'replace' argument, I like the idea of raising an error if
replace
> is not length one. The following patch provides an implementation.
>
> + seth
>
>
> Diff is against svn Revision: 37141
> --- a/src/main/random.c Sat Jan 21 10:54:11 2006 -0800
> +++ b/src/main/random.c Sat Jan 21 11:17:20 2006 -0800
> @@ -453,15 +453,18 @@
> /* with/without replacement according to r. */
> SEXP attribute_hidden do_sample(SEXP call, SEXP op, SEXP args, SEXP rho)
> {
> - SEXP x, y, prob;
> + SEXP x, y, prob, sreplace;
> int k, n, replace;
> double *p;
>
> checkArity(op, args);
> n = asInteger(CAR(args)); args = CDR(args);
> k = asInteger(CAR(args)); args = CDR(args);
> - replace = asLogical(CAR(args)); args = CDR(args);
> + sreplace = CAR(args); args = CDR(args);
> prob = CAR(args);
> + if (length(sreplace) != 1)
> + errorcall(call, _("invalid '%s' argument"),
"replace");
> + replace = asLogical(sreplace);
> if (replace == NA_LOGICAL)
> errorcall(call, _("invalid '%s' argument"),
"replace");
> if (n == NA_INTEGER || n < 1)
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Robert Gentleman, PhD
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M2-B876
PO Box 19024
Seattle, Washington 98109-1024
206-667-7700
rgentlem at fhcrc.org