Foro de debate

Problema programación

Problema programación

de ruben mesa -
Número de respuestas: 1

Me gustaría que alguien me ayudara en resolver el problema que tengo con sample en R.

noms <- matrix(nrow = 14, ncol = 5, rep(0,5*14))
noms <- as.data.frame(noms)
names(noms) <- c("Enrique","Marcos","Pablo","Juan","Miguel")
rownames(noms) <- c("Ronda1","Ronda2","Ronda3","Ronda4","Ronda5","Ronda6","Ronda7","Ronda8","Ronda9","Ronda10","Ronda11","Ronda12","Ronda13","Ronda14")
x <- c(1:14)
noms[ ,1] <- sample(x,14, replace = F)
for(i in 1:14){
for(j in 2:5){
    if(j == 2){
        noms[i,j] <- sample(x[x != noms[i,j-1]],1)
    } else if(j == 3){
        noms[i,j] <- sample(x[(x != noms[i,j-1]) && (x != noms[i,j-2])],1)
    } else if(j == 4){
        noms[i,j] <- sample(x[(x != noms[i,j-1]) && (x != noms[i,j-2]) && (x != noms[i,j-3])],1)
    } else if(j == 5){
        noms[i,j] <- sample(x[(x != noms[i,j-1]) && (x != noms[i,j-2]) && (x != noms[i,j-3]) &&  (x != noms[i,j-4])],1)
    }
}}

O añadir esta función :

f <- function(x, z) {
t <- sample(x[x != z],1)
return(t)}

De tal forma que en cada fila no se repita ningun numero y que cada columna contenga del 1:14. Todo aleatorio. También deseo añadir : Si en una fila, por ejemplo, contiene el 1 no puede aparecer el 2. Es decir, si tenemos un numero impar no puede aparecer el numero impar+1.

Muchas gracias de antemano.