Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparing Vector Values

Tags:

random

r

vector

`I'm wondering how I would go about altering this code so that corresponding values of both vectors cannot be equal. As an example: if x = (1, 2, 2, 4, 8, 1, 7, 9, 5, 10) and y = (3, 2, 7, 8, 4, 10, 4, 8, 2, 1), the second values for both vectors equal 2. Is there any way I can tell R to re-sample in this second spot in vector x until it is not the same value in vector y?

x <- c(1:10)
y <- c(1:10)
sample_x <- sample(x, length(10), replace = TRUE)
z <- sample_x > y`
like image 733
Ryan Caldwell Avatar asked Dec 16 '22 07:12

Ryan Caldwell


1 Answers

You could do:

while(any(x == y)) x <- sample(x)

Edit: Now I realize x and y probably come from a similar sample call with replace = TRUE, here is an interesting approach that avoids a while loop. It uses indices and modulo to ensure that the two samples do not match:

N <- 1:10  # vector to choose from (assumes distinct values)
L <- 20    # sample size - this might be length(N) as in your example

n <- length(N)

i <- sample(n,   L, replace = TRUE)
j <- sample(n-1, L, replace = TRUE)

x <- N[i]
y <- N[1 + (i + j - 1) %% n]
like image 85
flodel Avatar answered Dec 23 '22 09:12

flodel