> On Sep 16, 2015, at 3:40 PM, Bert Gunter <bgunter.4...@gmail.com> wrote: > > Nope. Take it back. I stand uncorrected. > >> system.time(z <-sample(1:10,1e6, rep=TRUE)) > user system elapsed > 0.045 0.001 0.047 > >> system.time(z <-sample.int(10,1e6,rep=TRUE)) > user system elapsed > 0.012 0.000 0.013 > > > sample() has to do subscripting in the general case; sample.int doesn't. > > But I would agree that the difference is likely almost always unnoticeable.
Well, in your defense Bert, given the nuance of the example you provided, it actually gets worse the larger the initial sample space is, if defined as a vector rather than a scalar. On my MacBook Pro, with 16 Gb of RAM and a 2.5 Ghz i7, running R version 3.2.2 (2015-08-14): > system.time(x1 <- sample(1:1e10, 1e8, replace = TRUE)) Killed: 9 That ran for a couple of minutes and eventually crashed R. However, as below: > system.time(x1 <- sample(1e10, 1e8, replace = TRUE)) user system elapsed 2.943 0.238 3.191 > system.time(x1 <- sample.int(1e10, 1e8, replace = TRUE)) user system elapsed 3.135 0.198 3.336 Here is another example that works, showing a larger time difference with the sample space as a vector: > system.time(x1 <- sample(1:1e9, 1e8, replace = TRUE)) user system elapsed 7.069 1.317 8.399 > system.time(x1 <- sample(1e9, 1e8, replace = TRUE)) user system elapsed 1.324 0.111 1.438 > system.time(x1 <- sample.int(1e9, 1e8, replace = TRUE)) user system elapsed 1.328 0.116 1.450 If one is running Monte Carlo simulations, repeating the above a very large number of times, it can become a meaningful difference. Thus, there is an incentive for one to specify the sample space as a scalar and perhaps consider the resultant vector, if needed, as indices (1:x) into the actual sample space desired. Interesting... Regards, Marc > > > -- Bert > Bert Gunter > > "Data is not information. Information is not knowledge. And knowledge > is certainly not wisdom." > -- Clifford Stoll > > > On Wed, Sep 16, 2015 at 1:34 PM, Bert Gunter <bgunter.4...@gmail.com> wrote: >> Yes. Thanks Marc. I stand corrected. >> >> -- Bert >> Bert Gunter >> >> "Data is not information. Information is not knowledge. And knowledge >> is certainly not wisdom." >> -- Clifford Stoll >> >> >> On Wed, Sep 16, 2015 at 1:28 PM, Marc Schwartz <marc_schwa...@me.com> wrote: >>> >>>> On Sep 16, 2015, at 1:06 PM, Bert Gunter <bgunter.4...@gmail.com> wrote: >>>> >>>> Yikes! The uniform distribution is a **continuous** distribution over >>>> an interval. You seem to want to sample over a discrete distribution. >>>> See ?sample for that, as in: >>>> >>>> sample(1:4,100,rep=TRUE) >>>> >>>> ## or for this special case and faster >>>> >>>> sample.int(4,size=100,rep=TRUE) >>> >>> >>> Bert, >>> >>> I am not sure that it is really faster, since internally, sample() calls >>> sample.int(): >>> >>>> sample >>> function (x, size, replace = FALSE, prob = NULL) >>> { >>> if (length(x) == 1L && is.numeric(x) && x >= 1) { >>> if (missing(size)) >>> size <- x >>> sample.int(x, size, replace, prob) >>> } >>> else { >>> if (missing(size)) >>> size <- length(x) >>> x[sample.int(length(x), size, replace, prob)] >>> } >>> } >>> >>> >>> set.seed(1) >>> >>>> system.time(x1 <- sample(1e10, 1e8, replace = TRUE)) >>> user system elapsed >>> 2.755 0.170 2.925 >>> >>> >>> set.seed(1) >>>> system.time(x2 <- sample.int(1e10, 1e8, replace = TRUE)) >>> user system elapsed >>> 2.767 0.183 2.951 >>> >>> >>>> all(x1 == x2) >>> [1] TRUE >>> >>> >>> Regards, >>> >>> Marc >>> >>> >>>> >>>> Cheers, >>>> Bert >>>> >>>> Bert Gunter >>>> >>>> "Data is not information. Information is not knowledge. And knowledge >>>> is certainly not wisdom." >>>> -- Clifford Stoll >>>> >>>> >>>> On Wed, Sep 16, 2015 at 10:11 AM, thanoon younis >>>> <thanoon.youni...@gmail.com> wrote: >>>>> Dear R- users >>>>> >>>>> I want to generate ordered categorical variable vector with 200x1 >>>>> dimension >>>>> and from 1 to 4 categories and i tried with this code >>>>> >>>>> Q1=runif(200,1,4) the results are not just 1 ,2 3,4, but the results with >>>>> decimals like 1.244, 2.342,4,321 and so on ... My question how can i >>>>> generate a vector and also a matrix with orered categorical variables and >>>>> without decimals just 1,2,3 ,4 ,1,2,3,4, .... >>>>> >>>>> Many thanks in advance >>> ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.