[R-es] Construir matriz de distancias

Juan Abasolo ju@n@@b@@olo @ending from ehu@eu@
Sab Sep 8 13:47:22 CEST 2018


Es algo más mágico que eso, aparentemente.
Seguí todos tus pasos y, lo comentado, R se cae.
Actualicé tooodos los paquetes y RStudio, y R se cae.

Probé con mis datos (codificados según IPA... masomeno) y... FUNCIONA!!!
Ahora tengo que ver si sirve para lo que me propongo... aprendiendo a
trabajar con dendogramas y clusters, no para sorpresa tuya ;-)

Muchísimas gracias.

Hau idatzi du Marcelino de la Cruz Rot (marcelino.delacruz using urjc.es)
erabiltzaileak (2018 ira. 7, or. (14:13)):

> 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
>
>

-- 
Juan Abasolo

Hizkuntzaren eta Literaturaren Didaktika Saila
Bilboko Hezkuntza Fakultatea
Euskal Herriko Unibertsitatea
UPV/EHU

Sarriena auzoa z/g
48940 Leioa
Bizkaia

	[[alternative HTML version deleted]]



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