# Suppose I have a vector: myvec = c(1,0,3,0,77,9,0,1,2,0)
# I want to randomly pick an element from myvec # where element == 0 # and print the value of the corresponding index. # So, for example I might randomly pick the 3rd 0 # and I would print the corresponding index # which is 7, # My initial approach is to use a for-loop. # Also I take a short-cut which assumes myvec is short: elm = 1 while (elm != 0) { # Pick a random index, (it might be a 0): rndidx = round(runif(1, min=1, max=length(myvec))) elm = myvec[rndidx] if(elm == 0) print("I am done") else print("I am not done") } print(rndidx) # If myvec is large and/or contains no zeros, # The above loop is sub-optimal/faulty. # I suspect that skilled R-people would approach this task differently. # Perhaps they would use features baked into R rather than use a loop? [[alternative HTML version deleted]]
______________________________________________ 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.