[R-es] Construir matriz de distancias

Marcelino de la Cruz Rot m@rcelino@del@cruz @ending from urjc@e@
Vie Sep 7 14:13:25 CEST 2018


Vaya, qué mala suerte. Yo lo probé en la consola de Windows y funcionó 
sin problema.
¿Tal vez sea por la versión  de alineR? La mía es la 1.1.4.

Saludos

El 07/09/2018 a las 11:38, Juan Abasolo escribió:
> Me encantaría saber pensar así de una.
> Creo que entiendo bien lo que me decís, pero no lo puedo poner en 
> marcha en mi computadora, por algo que no sé qué será.
>
> Cuando llego a:
> > cosa<-aline(w1=x,w2=y)
> En RStudio me dice que R sufrió algo. Probé directamente desde la 
> consola linux y también:
>
> > cosa<-aline(w1=x,w2=y)
> *** stack smashing detected ***: /usr/lib/R/bin/exec/R terminated
> Aborted
>
> Supongo que ese es un problema que no tiene nada que ver con el 
> original, pero de alguna manera se juntó todo
>
> Hau idatzi du Marcelino de la Cruz Rot (marcelino.delacruz using urjc.es 
> <mailto:marcelino.delacruz using urjc.es>) erabiltzaileak (2018 ira. 7, or. 
> (10:33)):
>
>     Hola Juan,
>
>     # No conozco ninguna función que haga lo que propones, pero no es muy
>     difícil implementarlo en R.
>     # Suponiendo que estos son tus datos de partida,
>
>     x0<- c("cansado",
>     "cansadisimo","cansau","reventado","reventao",NA,"canso")
>     namesx0<-LETTERS[1:7]
>
>
>     # Lo de los NA's deberías resolverlo (eliminarlos) al principio,
>     es decir:
>
>     ok<-!is.na <http://is.na>(x0)
>     x0.ok<-x0[ok]
>     namesx0.ok<-namesx0[ok]
>
>
>
>     # Una vez eliminados, como aline() calcula distancias entre elementos
>     pareados de dos vectores, lo primero que tienes que hacer es
>     justamente
>     crear esos vectores con todos los valores pareados con todos
>     x<- rep(x0.ok, length(x0.ok))
>     y<-rep(x0.ok, each=length(x0.ok))
>
>     # es decir,
>     cbind(x,y)
>
>     # ahora calculas la distancia aline entre los elementos
>     cosa<-aline(w1=x,w2=y)
>
>     # y lo formateas coo matriz simétrica
>
>     cosa.m<- matrix(cosa, nr=length(x0.ok),nc=length(x0.ok))
>     cosa.m
>
>
>     # le pones los nombres a las filas y columnas
>     dimnames(cosa.m)<-list(namesx0.ok, namesx0.ok)
>     cosa.m
>
>     # y lo presentas como matriz de distancias.
>     as.dist(cosa.m)
>
>
>
>     Aunque ya puestos, ¿porqué no implementarlo como una función?:
>
>
>
>     aline.dist<- function(x0, namesx0){
>         require(alineR)
>         ok<-!is.na <http://is.na>(x0)
>
>         x0.ok<-x0[ok]
>         namesx0.ok<-namesx0[ok]
>         x<- rep(x0.ok, length(x0.ok))
>         y<-rep(x0.ok, each=length(x0.ok))
>
>         cosa<-aline(w1=x,w2=y)
>
>         cosa.m<- matrix(cosa, nr=length(x0.ok),nc=length(x0.ok))
>        dimnames(cosa.m)<-list(namesx0.ok, namesx0.ok)
>        return(as.dist(cosa.m))
>
>     }
>
>
>     # A ver qué tal:
>
>     aline.dist(x0, namesx0)
>
>     Hmm, seguro que salen unos dendrogramas muy interesantes ;-)
>
>     plot(hclust(aline.dist(x0, namesx0)))
>
>
>
>
>     Saludos,
>
>     Marcelino
>
>
>     El 07/09/2018 a las 8:35, Juan Abasolo escribió:
>     > ¡Buenas, listeros!
>     >
>     > Supongo que lo que planteo es muy básico, pero estoy trabado y
>     no lo veo.
>     >
>     > Tengo una función que da la distancia lingüística ALINE,
>     alineR::aline(),
>     > pero que no genera matrices.
>     >
>     > Tengo que hacer matrices de distancias ALINE de unos datos tipo
>     esto:
>     >
>     > A cansado
>     > B cansadísimo
>     > C cansau
>     > D reventado
>     > E reventao
>     > F NA
>     > G canso
>     >
>     > alineR::aline("cansado", "cansado")
>     > # 0
>     >
>     > Necesito así, as.dist(miresultado)...
>     >   A B C D ...
>     > A 0
>     > B 0.2 0
>     > C 0.1 0 0
>     > D 0.9 0.89 0
>     > ...
>     >
>     > No sé si le puedo explicar a la función dist() o a alguna amiga
>     suya que
>     > method = "ALINE" quiere decir que use la función `aline()`. O si
>     tengo que
>     > intentar reinventar la rueda, pero con alineR::aline(x).
>     >
>     > También capaz que pueda evitar que aparezcan los NA sin mellar
>     el trabajo.
>     >
>     > Gracias por la pacencia.
>     >
>
>     -- 
>     Marcelino de la Cruz Rot
>     Depto. de Biología y Geología
>     Física y Química Inorgánica
>     Universidad Rey Juan Carlos
>     Móstoles España
>
>
>
> -- 
> Juan Abasolo
>
> Hizkuntzaren eta Literaturaren Didaktika Saila
> Bilboko Hezkuntza Fakultatea
> Euskal Herriko Unibertsitatea
> UPV/EHU
>
> Sarriena auzoa z/g
> 48940 Leioa
> Bizkaia


-- 
Marcelino de la Cruz Rot
Depto. de Biología y Geología
Física y Química Inorgánica
Universidad Rey Juan Carlos
Móstoles España



Más información sobre la lista de distribución R-help-es