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 en 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(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(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 [[alternative HTML version deleted]]
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 en urjc.es > <mailto:marcelino.delacruz en 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
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 en 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 en urjc.es > > <mailto:marcelino.delacruz en 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]]