[R-es] data.table: crear variable por loop

Carlos Ortega cof en qualityexcellence.es
Sab Jul 11 21:56:06 CEST 2015


Hola,

No sé si ya tienes resuelta esta duda. Si es que no, espero que lo
siguiente pueda ayudar.

Antes de pasar a cómo incluir el resultado de la comparación con
"stringdist()" en el data.table, quería alertarte de que el resultado de la
comparación de "stringdist()" será un vector y no un único valor.
La longitud del vector resultante será igual a la longitud del vector con
el comparas tu dirección de correo, esto es, la longitud de tu vector
"DOMAIN".

Mira este ejemplo:

#----------------------
> x = 'hello'
> y = c('world!', 'hello', 'this', 'is', 'foobar')
> stringdist(x,y)
[1] 5 0 5 5 6
#----------------------

Entiendo que lo querrás es elegir la cadena de tu "DOMAIN" más próxima a tu
correo. Pero puede ocurrir que salvo que sea idéntica (distancia 0), puede
haber varias cadenas que tengan una distancia equivalente (en el ejemplo
hay tres cadenas cuya distancia es 5).

Mi recomendación es que primero apliques "stringdist()"  por separado a tu
lista de correos y tu lista de referencia (DOMAIN), para ver bien el
resultado que obtienes y luego este resultado (entiendo que será un único
valor) lo incorpores al data.table.


Saludos,
Carlos Ortega
www.qualityexcellence.es

El 10 de julio de 2015, 2:55, Patricio Fuenmayor Viteri <
patricio.fuenmayor en outlook.com> escribió:

> Hola a todos.Al parecer aun soy muy novato usando data.tables. Necesito
> crear un proceso reiterativo, comparando un valor que está en una lista,
> con todos los datos de una columna.Me explico. Tengo una lista de los
> dominios de emails que son correctos, y necesito medir la distancia de
> textos (funcion stringdist), con los dominios que tengo en una base de
> datos. Pero como la lista de los emails es variable, necesito un bucle que
> haga esta comparación en data.tables:
> dmn02 <- c("HOTMAIL.COM","DOMINIO.COM","GMAIL.COM","YAHOO.COM","HOTMAIL.ES
> ")
> for(i in 1:length(dmn02)){email05[,":="(as.name
> (dmn02[i])=stringdist(dmn02[i],DOMAIN))]}
> no me reconoce la asignación al nombre de la variable...
> lo que debería hacer, reemplazando el valor de dmn02email05[,":="("
> HOTMAIL.COM"=stringdist("HOTMAIL.COM",DOMAIN))]para el valor de i=1
> Gracias por su ayuda.
>
>         [[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
>
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



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