Foro de debate

Ayuda con un trabajo

Ayuda con un trabajo

de Alejandro Salmeron -
Número de respuestas: 3

Hola amigos tengo que realizar un trabajo y no se como hacerlo, alguno que me pueda ayudar, lo que tengo que hacer, es lo siguiente:

Diseñe un script en r que tome como entrada dos arreglos ordenados x (0, 4, 5, 6, 9, 12, 16, 21) y z (1, 4, 9, 14, 17) y produzca como resultado el mismo arreglo x más los elementos no repetidos del arreglo z en la posición adecuada.

En respuesta a Alejandro Salmeron

Re: Ayuda con un trabajo

de Franz Jimeno -

A bote pronto sería una cosa como:

x <- c(0,4,5,6,9,12,16,21)
z <- c(1,4,9,14,17)
x <- sort(unique(c(x,z)))

No se si habrá una manera más eficiente de hacerlo.

 

Un saludo,

 

Franz

En respuesta a Franz Jimeno

Re: Ayuda con un trabajo

de Alejandro Salmeron -

Muchas gracias por responder.

Amigo la verdad no me sirve porque yo lo que tengo que hacer es el algoritmo, o sea la función y no puedo usar el unique o alguna función parecida. 

En respuesta a Alejandro Salmeron

Re: Ayuda con un trabajo

de Franz Jimeno -

A ver si te vale esto:

devuelve <- function(x, z) {
temp <- numeric(0)
i <- 1
j <- 1
xmax <- length(x)
zmax <- length(z)
while(TRUE) {
   #si hemos llegado al final de x, añadimos la cola de z
if(i>xmax) {
temp <- c(temp, z[j:zmax])
break
}
   #si hemos llegado al final de z, añadimos la cola de x
if(j>zmax) {
temp <- c(temp, x[i:xmax])
break
}
   if(x[i]<z[j]){
temp <- c(temp, x[i])
i <- i+1
} else if(x[i]==z[j]) {
temp <- c(temp, x[i])
i <- i+1
j <- j+1
} else if(x[i]>z[j]) {
temp <- c(temp, z[j])
j <- j+1
}
}
temp
}
x <- c(0,4,5,6,9,12,16,21)
z <- c(1,4,9,14,17)
devuelve(x,z)

 

Un saludo,

 

Franz