# 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.

Reply via email to