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@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. ______________________________________________ R-help@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.