Skip to content

[R-es] Selección de elementos de dos listas

4 messages · jmcontreras, Isidro Hidalgo, Carlos Ortega

#
Hola

La duda que tengo es la siguiente

Quiero coger elementos de unas listas de valores y que haga un bucle con 
unas condiciones: que no sean iguales k y z y que si ha hecho la 
simulación para, por ejemplo 0.1 y 0.15, no lo haga para 0.15 y 0.1 (es 
decir tener combinaciones de esas litas)

La primera condición es fácil, pero con la segunda lo conseguido creando 
una lista en txt y que la lea en cada iteración y ponerles condiciones 
con if. ¿Hay alguna forma más fácil?

Saludos y gracias

#Por ejemplo

a <-c(0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5)

b <-c(0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5)

for (k in a){

for (z in b){

if(k!=z){

#lo que sea

}}}
#
Prueba con:

combn(c(0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5), 2)

Un saludo

Isidro Hidalgo Arellano
Observatorio del Mercado de Trabajo
Consejería de Economía, Empresas y Empleo
http://www.castillalamancha.es/
simulación
una
¿Hay
#
Hola,
Extendiendo un poco más lo que ha comentado Isidro... pero con la misma
idea de base...


a <-c(0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5)
valFor <- as.data.frame(t(combn(a,2)))

for(i in 1:nrow(valFor)) {
  k <- valFor[i,1]
  z <- valFor[i,2]
....1
}

Incluso el bucle lo podrías sustituir por alguna de las *apply...

Saludos,
Carlos Ortega
www.qualityexcellence.es


El 11 de noviembre de 2015, 11:21, José Miguel Contreras <jmcontreras en ugr.es

  
    
#
Y si necesitaras todos los casos, una función que probablemente conozcas es
expand.grid, pero por si acaso la pongo, que es muy útil:

vars <- c(0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5)
combinaciones <- expand.grid(vars, vars)
combinaciones

Un saludo