[R-es] Optimizar código

Francisco Viciana
Wed, 07 Feb 2018 08:41:53 -0000

Esta es otra forma:

CADENA_1<-c("caliente","frío","gordo","flaco")
CADENA_2<-c("bueno","malo","bueno","malo")
CADENA<-rbind(CADENA_1,CADENA_2)
CADENA<-t(CADENA)
LISTA<-c("caliente","perro","flaco","gato","coche")

# -------

CADENA        <- CADENA_2
names(CADENA) <- CADENA_1
CADENA[LISTA] -> RESULTADO
RESULTADO[!is.na(RESULTADO)]


On 07/02/18 03:57, Carlos Ortega wrote:
> Hola,
>
> Esta es una forma...
>
>> str_1 <-
c("caliente","frío","gordo","flaco")
>> str_2 <-
c("bueno","malo","bueno","malo")
>> str_3 <- cbind(str_1, str_2)
>>
>> l_val <-
c("caliente","perro","flaco","gato","coche")
>>
>> row_god <- which(l_val %in% str_3[,1], arr.ind = TRUE )
>> row_god
> [1] 1 3
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
> El 6 de febrero de 2018, 23:15, Fernando Sanchez via R-help-es <
> r-help-es en r-project.org> escribió:
>
>> Hola a todos,
>> Os pongo aquí debajo un pequeño fragmento de código. Resulta que
dispongo
>> de una CADENA que tiene dos columnas. Una con palabras y la otra que
dice
>> si es bueno o malo. En otra variable tengo una LISTA. Quiero cruzar
todas
>> las palabras de la lista con todas las de la cadena y cuando alguna
>> coincida, que me indique en qué fila está y también si la palabra es
>> "buena" o "mala". El código que os pongo más abajo
funciona, pero es poco
>> eficiente cuando las listas son más largas.
>> Se os ocurre otra forma de programarlo más elegantemente en R.
>>
>>
CADENA_1<-c("caliente","frío","gordo","flaco")CADENA_2<-c("
>>
bueno","malo","bueno","malo")CADENA<-rbind(CADENA_1,CADENA_
>>
2)CADENA<-t(CADENA)LISTA<-c("caliente","perro","flaco","gato","coche")
>> for (i in 1:nrow(CADENA)) {for (j in 1:length(LISTA))
>> {if(toString(LISTA[j])==toString(CADENA[i,1]))
>> {print(paste("fila:",j,CADENA[i,2],sep=" "))}}}
>> Un saludo y muchas gracias a todos.
>>          [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>

--
+--------------------------------------------------------------
| Francisco J. Viciana Fernández
| Dpto. Indicadores Demográficos
| Servicio de Estadísticas Demográficas y Sociales
| Instituto de Estadística y Cartografía de Andalucía
| Leonardo Da Vinci, nº 21. Isla de La Cartuja.
| 41071 SEVILLA.
| franciscoj.viciana en juntadeandalucia.es
+--------------------------------------------------------------


------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: franciscoj_viciana.vcf
Type: text/x-vcard
Size: 4 bytes
Desc: no disponible
URL:
<https://stat.ethz.ch/pipermail/r-help-es/attachments/20180207/72c0ccf3/attachment-0001.vcf>