[R] select randomly from a list
Boris Steipe
boris.steipe at utoronto.ca
Thu May 22 14:17:54 CEST 2014
You are probably encountering an annoying behaviour of sample(): when it is given exactly one integer as an argument, it takes this as the upper limit of a range.
a <- c(3,5)
sample(a,10, replace=TRUE)
#[1] 5 5 3 3 3 3 3 3 3 5
a <- c(5)
sample(a,10, replace=TRUE)
#[1] 2 1 3 1 1 3 4 5 1 4
#i.e. this is the same as
sample(1:5,10, replace=TRUE)
#An easy way to catch this is:
if (length(a) > 1) sample(a,1) else a
Boris
On 2014-05-22, at 5:05 AM, Jim Lemon wrote:
> On Thu, 22 May 2014 09:54:13 AM Ragia Ibrahim wrote:
>> Hi,
>> kindly I want to select randomly and item from list of items. the list
>> generated in a looping process. I used sample(mylist,1) it works fine.
>> BUTsome times the list have only one item. that should be chosen in
> this
>> case since there is no other one. I found that sample return different
> item
>> not included in the list thanks in advance
>> RAE
>>
> Hi RAE,
> This doesn't happen in an example like this:
>
> for(i in 1:5) {
> testlist<-list()
> for(j in 1:i) testlist[[j]]<-sample(LETTERS[1:26],1)
> cat("list is\n")
> print(testlist)
> cat("sample is\n")
> print(sample(testlist,1))
> }
>
> How are you generating your lists?
>
> Jim
>
> ______________________________________________
> 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