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 ([email protected]
<mailto:[email protected]>) 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
_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es