[R-es] Como puedo reducir el tiempo de ejecución en la siguiente rutina

2020-12-13 Thread Carlos Santos
Buen dia,

Tengo un problema cuando ejecuto la siguiente rutina, porque con una matriz
muy grande el tiempo de ejecución se va a bastantes  horas.

Cualquier idea para mejorarlo y reducir significativamente el tiempo,
estaría muy agradecido

Muchas gracias por vuestra ayuda

#_

f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
c(EMISOR,RECEPTOR[x])) %>%
dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}

#
__

fila = 1
rr = nrow(data2)

repeat{
smc <-
sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))
EMISOR <- data2[fila,1]$Var
RECEPTOR <-
data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var

Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]

data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==
 data2[fila,1]$Var)] <- Rmax
fila = fila + 1
if (fila == rr) {break}
}


Libre
de virus. www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Como puedo reducir el tiempo de ejecución en la siguiente rutina

2020-12-13 Thread Carlos Santos
Perdón Carlos, con las prisas se me olvidó por completo añadir lo que
faltaba, tienes toda la razón

Supongamos que tenemos esta matriz, se quiere conseguir para el mayor valor
por fila tomar el valor de la posición que ocupa la primera columna "Var"
en base a la columna elegida y si hay varios valores máximos iguales,
entonces ejecutar la función "f5" para elegir una y según valor máximo
obtenido proceder de la misma manera que antes.

El problema es cuando tengo matrices de 3000x3000 o 1x1, y
además los dígitos de la columna primera son superiores al puesto en este
ejemplo, entonces el tiempo de calculo es excesivo.

[image: image.png]

codigo:


<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Libre
de virus. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

El dom, 13 dic 2020 a las 12:49, Carlos Ortega ()
escribió:

> Hola,
>
> Mejor si pones un ejemplo de tu matriz y cuentas lo que quieres hacer...
> El  enfoque puede ser muy diferente al que has planteado.
>
> Gracias,
> Calros Ortega
> www.qualityexcellence.es
>
> El dom, 13 dic 2020 a las 12:33, Carlos Santos (<
> carlossantos@gmail.com>) escribió:
>
>> Buen dia,
>>
>> Tengo un problema cuando ejecuto la siguiente rutina, porque con una
>> matriz
>> muy grande el tiempo de ejecución se va a bastantes  horas.
>>
>> Cualquier idea para mejorarlo y reducir significativamente el tiempo,
>> estaría muy agradecido
>>
>> Muchas gracias por vuestra ayuda
>>
>>
>> #_
>>
>> f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
>> c(EMISOR,RECEPTOR[x])) %>%
>> dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}
>>
>> #
>>
>> __
>>
>> fila = 1
>> rr = nrow(data2)
>>
>> repeat{
>> smc <-
>>
>> sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))
>> EMISOR <- data2[fila,1]$Var
>> RECEPTOR <-
>>
>> data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var
>>
>> Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]
>>
>> data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==
>>  data2[fila,1]$Var)] <- Rmax
>> fila = fila + 1
>> if (fila == rr) {break}
>> }
>>
>> <
>> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
>> >
>> Libre
>> de virus. www.avast.com
>> <
>> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
>> >
>> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>
>> [[alternative HTML version deleted]]
>>
>> ___
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Como puedo reducir el tiempo de ejecución en la siguiente rutina

2020-12-13 Thread Carlos Santos
>
> Perdón Carlos, con las prisas se me olvidó por completo añadir lo que
> faltaba, tienes toda la razón
>
> Supongamos que tenemos esta matriz, se quiere conseguir para el mayor
> valor por fila tomar el valor de la posición que ocupa la primera
> columna "Var" en base a la columna elegida y si hay varios valores
> máximos iguales, entonces ejecutar la función "f5" para elegir una y
> según valor máximo obtenido proceder de la misma manera que antes.
>
> El problema es cuando tengo matrices de 3000x3000 o 1x1, y
> además los dígitos de la columna primera son superiores al puesto en este
> ejemplo, entonces el tiempo de calculo es excesivo.
>
> [image: image.png]
>
> codigo:
>


> f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
> c(EMISOR,RECEPTOR[x])) %>%
> dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}
> #
> #
> fila = 1
> rr = nrow(data2)
> data1 <- data1 %>% mutate(Clus.Multi.OPTIMO=Clus.Multi.MAX)
> #
> repeat{
> smc <-
> sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))
> EMISOR <- data2[fila,1]$Var
> RECEPTOR <-
> data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var
> Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]
> data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==
> data2[fila,1]$Var)] <- Rmax
> fila = fila + 1
> if (fila == rr) {break}
> }
>


>
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>  Libre
> de virus. www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
> <#m_-198326376745946536_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
> El dom, 13 dic 2020 a las 12:49, Carlos Ortega ()
> escribió:
>
>> Hola,
>>
>> Mejor si pones un ejemplo de tu matriz y cuentas lo que quieres hacer...
>> El  enfoque puede ser muy diferente al que has planteado.
>>
>> Gracias,
>> Calros Ortega
>> www.qualityexcellence.es
>>
>> El dom, 13 dic 2020 a las 12:33, Carlos Santos (<
>> carlossantos@gmail.com>) escribió:
>>
>>> Buen dia,
>>>
>>> Tengo un problema cuando ejecuto la siguiente rutina, porque con una
>>> matriz
>>> muy grande el tiempo de ejecución se va a bastantes  horas.
>>>
>>> Cualquier idea para mejorarlo y reducir significativamente el tiempo,
>>> estaría muy agradecido
>>>
>>> Muchas gracias por vuestra ayuda
>>>
>>>
>>> #_
>>>
>>> f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
>>> c(EMISOR,RECEPTOR[x])) %>%
>>> dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}
>>>
>>> #
>>>
>>> __
>>>
>>> fila = 1
>>> rr = nrow(data2)
>>>
>>> repeat{
>>> smc <-
>>>
>>> sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))
>>> EMISOR <- data2[fila,1]$Var
>>> RECEPTOR <-
>>>
>>> data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var
>>>
>>> Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]
>>>
>>> data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==
>>>  data2[fila,1]$Var)] <- Rmax
>>> fila = fila + 1
>>> if (fila == rr) {break}
>>> }
>>>
>>> <
>>> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
>>> >
>>> Libre
>>> de virus. www.avast.com
>>> <
>>> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
>>> >
>>> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ___
>>> R-help-es mailing list
>>> R-help-es@r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>
___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Como puedo reducir el tiempo de ejecución en la siguiente rutina

2020-12-14 Thread Carlos Santos
gracias Emilio por tu ayuda, la selección es por fila, no por variable

He intentado discriminar cuando solo encuentra una posición en la fila que
es el máximo, pero el ahorro de tiempo no es mucho aunque algo es algo

Creo que el tiempo se consume en la parte del ELSE, y aunque entiendo que
se tiene que leer toda la matriz fila a fila, no veo cómo hacer que consuma
menos tiempo

Solo me quedaría probar dividir la matriz en trozos, para ver si en proceso
paralelo podría consumir menos tiempo, ya que cada fila es independiente de
otra fila.


if (smc == 1) {
data1$Clus.Multi.OPTIMO[fila] <-
data1$Clus.Multi.MAX[max(data2[fila,(3:(rr+2))])]
  } else {
RECEPTOR$clus <-
data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,(3:(rr+2))]))-2,1][1]$Var

RECEPTOR$dist <- mclapply((1:smc),f5) %>% unlist()
data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX == EMISOR)] <-
RECEPTOR[which.max(RECEPTOR[,2]),1]
  }

Muchas gracias de nuevo Emilio
Un saludo
_


El lun, 14 dic 2020 a las 8:08, Emilio L. Cano ()
escribió:

> Hola,
>
> Para la primera parte (seleccionar los valores más altos de una variable)
> yo usaría dplyr::slice_max(). Creo que eso debería ser rápido y con el
> filtro hecho lo demás debería ser trivial. Si he entendido bien el problema.
>
> Un saludo,
> Emilio
>
> El 13 dic 2020, a las 15:31, Carlos Santos 
> escribió:
>
> Perdón Carlos, con las prisas se me olvidó por completo añadir lo que
>> faltaba, tienes toda la razón
>>
>> Supongamos que tenemos esta matriz, se quiere conseguir para el mayor
>> valor por fila tomar el valor de la posición que ocupa la primera
>> columna "Var" en base a la columna elegida y si hay varios valores
>> máximos iguales, entonces ejecutar la función "f5" para elegir una y
>> según valor máximo obtenido proceder de la misma manera que antes.
>>
>> El problema es cuando tengo matrices de 3000x3000 o 1x1, y
>> además los dígitos de la columna primera son superiores al puesto en este
>> ejemplo, entonces el tiempo de calculo es excesivo.
>>
>> 
>>
>> codigo:
>>
>
>
>> f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
>> c(EMISOR,RECEPTOR[x])) %>%
>> dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}
>> #
>> #
>> fila = 1
>> rr = nrow(data2)
>> data1 <- data1 %>% mutate(Clus.Multi.OPTIMO=Clus.Multi.MAX)
>> #
>> repeat{
>> smc <-
>> sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))
>> EMISOR <- data2[fila,1]$Var
>> RECEPTOR <-
>> data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var
>> Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]
>> data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==
>> data2[fila,1]$Var)] <- Rmax
>> fila = fila + 1
>> if (fila == rr) {break}
>> }
>>
>
>
>>
>>
>>
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>  Libre
>> de virus. www.avast.com
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>
>> El dom, 13 dic 2020 a las 12:49, Carlos Ortega ()
>> escribió:
>>
>>> Hola,
>>>
>>> Mejor si pones un ejemplo de tu matriz y cuentas lo que quieres hacer...
>>> El  enfoque puede ser muy diferente al que has planteado.
>>>
>>> Gracias,
>>> Calros Ortega
>>> www.qualityexcellence.es
>>>
>>> El dom, 13 dic 2020 a las 12:33, Carlos Santos (<
>>> carlossantos@gmail.com>) escribió:
>>>
>>>> Buen dia,
>>>>
>>>> Tengo un problema cuando ejecuto la siguiente rutina, porque con una
>>>> matriz
>>>> muy grande el tiempo de ejecución se va a bastantes  horas.
>>>>
>>>> Cualquier idea para mejorarlo y reducir significativamente el tiempo,
>>>> estaría muy agradecido
>>>>
>>>> Muchas gracias por vuestra ayuda
>>>>
>>>>
>>>> #_
>>>>
>>>> f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
>>>> c(EMISOR,RECEPTOR[x])) %>%
>>>> dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}
>>>>
>>>> #
>>>>
>>>> 

Re: [R-es] Como puedo reducir el tiempo de ejecución en la siguiente rutina

2020-12-14 Thread Carlos Santos
gracias por tus comentarios.

lo que dices es asi, excepto cuando hay varios máximos iguales entonces se
ejecuta f5 para saber cual de ellos es el elegido, y a continuación se hace
lo mismo que has puesto en la frase, es decir elegir el valor de la columna
var que ocupa dicha posición del elegido

gracias de todas formas, cualquier ayuda y comentario es de agradecer




El lun, 14 dic 2020 a las 12:05,  escribió:

> Te quería echar una mano pero no veo el objetivo del proceso.
>
> A ver si lo voy entendiendo: "Supongamos que tenemos esta matriz, se
> quiere conseguir para el mayor valor por fila tomar el valor de la posición
> que ocupa la primera columna "Var" en base a la columna elegida y si hay
> varios valores máximos iguales, entonces ejecutar la función "f5" para
> elegir una y según valor máximo obtenido proceder de la misma manera que
> antes."
>
> ¿Con eso quieres decir que buscas en la fila el valor máximo de las
> columnas MX... (supongamos que es la columna MZ) y seleccionas el valor de
> la columna var que ocupa dicha posición (la posición Z en este caso?. ¿Y en
> caso de varios máximos eliges una de las columnas candidatas mediante la
> función f5?. Y esa función f5 contiene una llamada a cohend, nada más.
>
> No sé, no acabo de entender la lógica de todo el proceso. Pero así, a
> oscuras, data.table es más eficiente manejando grandes volúmenes de datos y
> hacer un repeat tal vez no sea lo más rápido, sino aplicar vectorización
> allá donde se pueda.
>
> Siento no poder ayudar más. Ánimo.
>
> ‐‐‐ Original Message ‐‐‐
>
> El lunes, 14 de diciembre de 2020 a las 10:31, Carlos Santos <
> carlossantos@gmail.com> escribió:
>
> > gracias Emilio por tu ayuda, la selección es por fila, no por variable
> >
> > He intentado discriminar cuando solo encuentra una posición en la fila
> que
> >
> > es el máximo, pero el ahorro de tiempo no es mucho aunque algo es algo
> >
> > Creo que el tiempo se consume en la parte del ELSE, y aunque entiendo que
> >
> > se tiene que leer toda la matriz fila a fila, no veo cómo hacer que
> consuma
> >
> > menos tiempo
> >
> > Solo me quedaría probar dividir la matriz en trozos, para ver si en
> proceso
> >
> > paralelo podría consumir menos tiempo, ya que cada fila es independiente
> de
> >
> > otra fila.
> >
> > if (smc == 1) {
> >
> > data1$Clus.Multi.OPTIMO[fila] <-
> >
> > data1$Clus.Multi.MAX[max(data2[fila,(3:(rr+2))])]
> >
> > } else {
> >
> > RECEPTOR$clus <-
> >
> >
> data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,(3:(rr+2))]))-2,1][1]$Var
> >
> > RECEPTOR$dist <- mclapply((1:smc),f5) %>% unlist()
> >
> > data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX == EMISOR)] <-
> >
> >
> > RECEPTOR[which.max(RECEPTOR[,2]),1]
> >
> > }
> >
> > Muchas gracias de nuevo Emilio
> >
> > Un saludo
> >
> > El lun, 14 dic 2020 a las 8:08, Emilio L. Cano (emilopezc...@gmail.com)
> >
> > escribió:
> >
> > > Hola,
> > >
> > > Para la primera parte (seleccionar los valores más altos de una
> variable)
> > >
> > > yo usaría dplyr::slice_max(). Creo que eso debería ser rápido y con el
> > >
> > > filtro hecho lo demás debería ser trivial. Si he entendido bien el
> problema.
> > >
> > > Un saludo,
> > >
> > > Emilio
> > >
> > > El 13 dic 2020, a las 15:31, Carlos Santos carlossantos@gmail.com
> > >
> > > escribió:
> > >
> > > Perdón Carlos, con las prisas se me olvidó por completo añadir lo que
> > >
> > > > faltaba, tienes toda la razón
> > > >
> > > > Supongamos que tenemos esta matriz, se quiere conseguir para el mayor
> > > >
> > > > valor por fila tomar el valor de la posición que ocupa la primera
> > > >
> > > > columna "Var" en base a la columna elegida y si hay varios valores
> > > >
> > > > máximos iguales, entonces ejecutar la función "f5" para elegir una y
> > > >
> > > > según valor máximo obtenido proceder de la misma manera que antes.
> > > >
> > > > El problema es cuando tengo matrices de 3000x3000 o 1x1, y
> > > >
> > > > además los dígitos de la columna primera son superiores al puesto en
> este
> > > >
> > > > ejemplo, entonces el tiempo de calculo es excesivo.
> > > >
> > > > 
> > > &

Re: [R-es] bases de datos

2021-01-15 Thread Carlos Santos
Hila Manuel

Yo normalmente uso estas aunque hay otras muchas, a lo mejor ya las conoces

UCI Macine Learning repository
MLD Machine Learning repository
KEEL knowledge extracción evolutionary Learning data repository
Open ML data repository


El vie., 15 ene. 2021 19:44, Manuel Mendoza 
escribió:

> Muy buenas, supongo que ya hay cientos de bases de datos en formato csv,
> incluidas en paquetes de r. ¿Sabéis si hay alguna forma de acceder a ellas
> directamente? ver previamente el tipo de datos que tienen, o alguna forma
> de cribar por temas. Me hacen falta bases de datos de ciencias naturales.
> Gracias,
> Manuel
>
> [[alternative HTML version deleted]]
>
> ___
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] Se puede ejecutar un programa en la nube?

2021-04-18 Thread Carlos Santos
Hola a todos,

Tengo problemas de memoria y espacio en mi PC cuando ejecutó un programa
utilizando datasets medios y grandes de más de 4 filas con más de 30
columnas

Sabéis si hay alguna manera de ejecutar mi programa en la nube para
solucionar dicho problema?

Gracias por vuestra ayuda
Carlos Santos

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-22 Thread Carlos Santos
Hola a todos, familia de R

Tengo un pequeño problema de tiempo de ejecución con una rutina, a ver si
me pueden echar una mano y ayudarme si es posible, claro.

La rutina es la siguiente:

while(totclu != 3){
  matrizF <- matrix(0, nrow = 1, ncol = totclu)
  for (j in 1:totclu) {
q1 <- c(which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1]),
which(data1$Clus.Multi.FAIRNESS == k2A$Var1[j]))
q2 <- nrow(as.data.frame(c(which(data1$Clus.Multi.FAIRNESS ==
k2A$Var1[1]),
   which(data1$Clus.Multi.FAIRNESS ==
k2A$Var1[j]
observado <- table(data1$VarFC[q1])/q2
matrizF[i] <- dist(rbind(observado,propuesto),method = "euclidean")
  }
  matrizF[1] <- 99
  min_observado <- which.min(matrizF)
  q4 <- which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1])
  data1$Clus.Multi.FAIRNESS[q4] <-  as.character(k2A$Var1[min_observado])
  k2A$Freq[min_observado] <- k2A$Freq[min_observado] + k2A$Freq[1]
  k2A <- as.data.frame(table(as.character(data1$Clus.Multi.FAIRNESS))) %>%
arrange(Freq)
  totclu=nrow(k2A)
}

El problema fundamental es que la matriz que aparece como k2A es una matriz
(nxn) lo que significa que puede ser muy grande, por ejemplo 1000x1000, y
el tiempo que tarda es enorme y no veo como disminuir el tiempo de
ejecución del "for" que pienso que es lo mas duro.

No se si se puede poner como procesamiento en paralelo en r, pero tampoco
ser como ponerlo

Si me pueden echar una mano, les estaré muy agradecido

muchas gracias de antemano

Carlos Santos

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-22 Thread Carlos Santos
Gracias Carlos,

Si, quizas no lo explique bien, lo fundamental y es donde se tarda mucho
tiempod e cpu, es el bucle FOR, que tiene que recorrer una matriz desde 1
hasta totcluy, entendiendo que la variable totclu puede ser por ejemplo
10.000, lo que quiere decir que por cada fila tiene que realizar el calculo
que he puesto en el FOR que tampoco es demasiado pero logicamente tiene que
recorrer por ejemplo en este caso 10.000 columnas
A su vez el while tiene que hacerlo otras 1 veces menos 3, lo que
significa que el tiempo empleado hasta completar cada fila de la matriz es
enorme

no se si he podido explicarlo mejor, es por eso que entiendo que el bucle
FOR es muy costoso, y aunque he puesto un while bien podia ser un FOR
dentro de otro FOR, en donde el primero controla las filas y el segundo las
columnas, pero no se como hacer que el tiempo de cpu sea lo menor posible

El mié, 22 sept 2021 a las 14:56, Carlos Ortega ()
escribió:

> Hola,
>
> ¿Por qué no nos dices mejor el problema qué quieres resolver con tus
> datos/matriz/matrices inicial?
> Seguramente podamos ver una forma alternativa a utilizar un bucle...
>
> En cualquier caso, por si quieres ir viendo como correr ese bucle en
> paralelo..:
>
>-
>
> https://stackoverflow.com/questions/53054366/how-can-i-run-a-for-loop-in-parallel-in-r
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El mié, 22 sept 2021 a las 13:18, Carlos Santos (<
> carlossantos@gmail.com>) escribió:
>
>> Hola a todos, familia de R
>>
>> Tengo un pequeño problema de tiempo de ejecución con una rutina, a ver si
>> me pueden echar una mano y ayudarme si es posible, claro.
>>
>> La rutina es la siguiente:
>>
>> while(totclu != 3){
>>   matrizF <- matrix(0, nrow = 1, ncol = totclu)
>>   for (j in 1:totclu) {
>> q1 <- c(which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1]),
>> which(data1$Clus.Multi.FAIRNESS == k2A$Var1[j]))
>> q2 <- nrow(as.data.frame(c(which(data1$Clus.Multi.FAIRNESS ==
>> k2A$Var1[1]),
>>which(data1$Clus.Multi.FAIRNESS ==
>> k2A$Var1[j]
>> observado <- table(data1$VarFC[q1])/q2
>> matrizF[i] <- dist(rbind(observado,propuesto),method = "euclidean")
>>   }
>>   matrizF[1] <- 99
>>   min_observado <- which.min(matrizF)
>>   q4 <- which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1])
>>   data1$Clus.Multi.FAIRNESS[q4] <-  as.character(k2A$Var1[min_observado])
>>   k2A$Freq[min_observado] <- k2A$Freq[min_observado] + k2A$Freq[1]
>>   k2A <- as.data.frame(table(as.character(data1$Clus.Multi.FAIRNESS))) %>%
>> arrange(Freq)
>>   totclu=nrow(k2A)
>> }
>>
>> El problema fundamental es que la matriz que aparece como k2A es una
>> matriz
>> (nxn) lo que significa que puede ser muy grande, por ejemplo 1000x1000, y
>> el tiempo que tarda es enorme y no veo como disminuir el tiempo de
>> ejecución del "for" que pienso que es lo mas duro.
>>
>> No se si se puede poner como procesamiento en paralelo en r, pero tampoco
>> ser como ponerlo
>>
>> Si me pueden echar una mano, les estaré muy agradecido
>>
>> muchas gracias de antemano
>>
>> Carlos Santos
>>
>> [[alternative HTML version deleted]]
>>
>> ___
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-22 Thread Carlos Santos
jajajaja, perdón no te había entendido, lo siento

a ver, de esta forma y para que sea fácil, supongamos esta matriz,
evidentemente el problema lo tengo cuando esta matriz es muy grande claro.
G1
G2
G3
G4
G5
G6
G7
G8
G9
G10
El while lo puse porque quite el for que tenia al principio para no poner
muchos FOR anidados, por lo tanto el while va a ejecutar el FOR siguiente 7
veces

El FOR lo que hace es ejecutarse 9 veces la primera vez, y agrupa los
registros de G1 con cada uno de los otros grupos individualmente, calcula
el porcentaje de elementos de cada nuevo grupo respecto a una de las
variables del registro, por ejemplo supongamos que la variable tiene 2
valores, obtenemos un punto (X,Y) que representa el porcentaje de cada
valor que tiene la variable dentro de su nuevo grupo
Lo mismo para el resto de nuevos grupos, y se calcula la distancia euclidea
entre cada nuevo punto respecto de un punto predefinido.

a continuación se haría tomando G2 con el resto descendente, y así
sucesivamente hasta que el while ejecute en este ejemplo 7 veces = 10-3

Quizas asi este mas claro, Carlos





El mié, 22 sept 2021 a las 15:43, Carlos Ortega ()
escribió:

> Hola Carlos,
>
> Sí, si lo he entendido así.
>
> Lo que te propongo es que nos cuentes qué quieres hacer con esos dos
> bucles o un bucle y un while. Porque a lo mejor se puede plantear otra
> aproximación para actualizar cada elemento de la matriz.
>
> Gracias,
> Carlos.
>
> El mié, 22 sept 2021 a las 15:31, Carlos Santos (<
> carlossantos@gmail.com>) escribió:
>
>> Gracias Carlos,
>>
>> Si, quizas no lo explique bien, lo fundamental y es donde se tarda mucho
>> tiempod e cpu, es el bucle FOR, que tiene que recorrer una matriz desde 1
>> hasta totcluy, entendiendo que la variable totclu puede ser por ejemplo
>> 10.000, lo que quiere decir que por cada fila tiene que realizar el calculo
>> que he puesto en el FOR que tampoco es demasiado pero logicamente tiene que
>> recorrer por ejemplo en este caso 10.000 columnas
>> A su vez el while tiene que hacerlo otras 1 veces menos 3, lo que
>> significa que el tiempo empleado hasta completar cada fila de la matriz es
>> enorme
>>
>> no se si he podido explicarlo mejor, es por eso que entiendo que el bucle
>> FOR es muy costoso, y aunque he puesto un while bien podia ser un FOR
>> dentro de otro FOR, en donde el primero controla las filas y el segundo las
>> columnas, pero no se como hacer que el tiempo de cpu sea lo menor posible
>>
>> El mié, 22 sept 2021 a las 14:56, Carlos Ortega (<
>> c...@qualityexcellence.es>) escribió:
>>
>>> Hola,
>>>
>>> ¿Por qué no nos dices mejor el problema qué quieres resolver con tus
>>> datos/matriz/matrices inicial?
>>> Seguramente podamos ver una forma alternativa a utilizar un bucle...
>>>
>>> En cualquier caso, por si quieres ir viendo como correr ese bucle en
>>> paralelo..:
>>>
>>>-
>>>
>>> https://stackoverflow.com/questions/53054366/how-can-i-run-a-for-loop-in-parallel-in-r
>>>
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>> El mié, 22 sept 2021 a las 13:18, Carlos Santos (<
>>> carlossantos@gmail.com>) escribió:
>>>
>>>> Hola a todos, familia de R
>>>>
>>>> Tengo un pequeño problema de tiempo de ejecución con una rutina, a ver
>>>> si
>>>> me pueden echar una mano y ayudarme si es posible, claro.
>>>>
>>>> La rutina es la siguiente:
>>>>
>>>> while(totclu != 3){
>>>>   matrizF <- matrix(0, nrow = 1, ncol = totclu)
>>>>   for (j in 1:totclu) {
>>>> q1 <- c(which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1]),
>>>> which(data1$Clus.Multi.FAIRNESS == k2A$Var1[j]))
>>>> q2 <- nrow(as.data.frame(c(which(data1$Clus.Multi.FAIRNESS ==
>>>> k2A$Var1[1]),
>>>>which(data1$Clus.Multi.FAIRNESS ==
>>>> k2A$Var1[j]
>>>> observado <- table(data1$VarFC[q1])/q2
>>>> matrizF[i] <- dist(rbind(observado,propuesto),method = "euclidean")
>>>>   }
>>>>   matrizF[1] <- 99
>>>>   min_observado <- which.min(matrizF)
>>>>   q4 <- which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1])
>>>>   data1$Clus.Multi.FAIRNESS[q4] <-
>>>> as.character(k2A$Var1[min_observado])
>>>>   k2A$Freq[min_observado] <- k2A$Freq[min_observado] + k2A$Freq[1]
>>>>   k2A <- as.data.frame(table(as.character(data1$Clus.Multi.FAI

Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-22 Thread Carlos Santos
ok Carlos, pongo un ejemplo con pocos registros a ver si puedo explicarlo
mejor:

Datos:
V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 63 1 1 145 A 233 1 2 3 0
2 67 1 4 160 A 286 0 2 2 3
3 67 2 4 120 B 229 0 2 2 2
4 37 1 3 130 C 250 0 0 3 0
5 41 1 2 130 C 204 0 2 1 0
6 56 2 2 120 A 236 0 0 1 0
7 62 1 4 140 B 268 0 2 3 2
8 57 2 4 120 C 354 0 0 1 0
9 63 2 4 130 A 254 0 2 2 1
10 53 1 4 140 B 203 1 2 3 0
11 57 2 4 140 B 192 0 0 2 0
12 56 1 2 140 A 294 0 2 2 0
13 56 2 3 130 C 256 1 2 2 1
14 44 2 2 120 B 263 0 0 1 0
15 52 2 3 172 B 199 1 0 1 0

tengo la matriz que sale de V5:
A
B
C

junto las filas de A con B, y obtengo el punto respecto de V2, y me da
(0.33, 0.67), puesto que V2 tiene dos valores, es un porcentaje en
definitiva
junto las filas de A con C, y se obtiene el punto (0.5, 0.5)
obtengo la distancia euclidea de dichos puntos sobre el punto definido,
supongamos (0.34, 066),  lo que significa que la menor distancia se obtiene
entre A y B, por lo tanto las filas que tienen A en V5 se cambia su valor a
C, y se obtiene la siguiente matriz, donde V5 ya no tiene la A
V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 63 1 1 145 C 233 1 2 3 0
2 67 1 4 160 C 286 0 2 2 3
3 67 2 4 120 B 229 0 2 2 2
4 37 1 3 130 C 250 0 0 3 0
5 41 1 2 130 C 204 0 2 1 0
6 56 2 2 120 C 236 0 0 1 0
7 62 1 4 140 B 268 0 2 3 2
8 57 2 4 120 C 354 0 0 1 0
9 63 2 4 130 C 254 0 2 2 1
10 53 1 4 140 B 203 1 2 3 0
11 57 2 4 140 B 192 0 0 2 0
12 56 1 2 140 C 294 0 2 2 0
13 56 2 3 130 C 256 1 2 2 1
14 44 2 2 120 B 263 0 0 1 0
15 52 2 3 172 B 199 1 0 1 0
en este ejemplo el while seria 2, es decir que se pararía puesto que solo
tengo dos valore en V5

Evidentemente cuando tengo 100.000 filas con 100 columnas y tengo la matriz
intermedia que he puesto en este ejemplo con letras de 2000 columnas,
puesto no veo como consumir menos tiempo de ejecucion.

espero que lo haya podido explicar mejor con este ejemplo.

gracias de antemano Carlos

El mié, 22 sept 2021 a las 17:48, Carlos Ortega ()
escribió:

> Vaya me cuesta verlo... :-)...
>
> ¿Puedes poner un ejemplo con números con los diferentes vectores con los
> que partes y cómo vas rellenando esa matriz?
> Y cómo quedaría al final..
>
> Gracias!
> Carlos.
>
> El mié, 22 sept 2021 a las 16:01, Carlos Santos (<
> carlossantos@gmail.com>) escribió:
>
>> jajajaja, perdón no te había entendido, lo siento
>>
>> a ver, de esta forma y para que sea fácil, supongamos esta matriz,
>> evidentemente el problema lo tengo cuando esta matriz es muy grande claro.
>> G1
>> G2
>> G3
>> G4
>> G5
>> G6
>> G7
>> G8
>> G9
>> G10
>> El while lo puse porque quite el for que tenia al principio para no poner
>> muchos FOR anidados, por lo tanto el while va a ejecutar el FOR siguiente 7
>> veces
>>
>> El FOR lo que hace es ejecutarse 9 veces la primera vez, y agrupa los
>> registros de G1 con cada uno de los otros grupos individualmente, calcula
>> el porcentaje de elementos de cada nuevo grupo respecto a una de las
>> variables del registro, por ejemplo supongamos que la variable tiene 2
>> valores, obtenemos un punto (X,Y) que representa el porcentaje de cada
>> valor que tiene la variable dentro de su nuevo grupo
>> Lo mismo para el resto de nuevos grupos, y se calcula la distancia
>> euclidea entre cada nuevo punto respecto de un punto predefinido.
>>
>> a continuación se haría tomando G2 con el resto descendente, y así
>> sucesivamente hasta que el while ejecute en este ejemplo 7 veces = 10-3
>>
>> Quizas asi este mas claro, Carlos
>>
>>
>>
>>
>>
>> El mié, 22 sept 2021 a las 15:43, Carlos Ortega (<
>> c...@qualityexcellence.es>) escribió:
>>
>>> Hola Carlos,
>>>
>>> Sí, si lo he entendido así.
>>>
>>> Lo que te propongo es que nos cuentes qué quieres hacer con esos dos
>>> bucles o un bucle y un while. Porque a lo mejor se puede plantear otra
>>> aproximación para actualizar cada elemento de la matriz.
>>>
>>> Gracias,
>>> Carlos.
>>>
>>> El mié, 22 sept 2021 a las 15:31, Carlos Santos (<
>>> carlossantos@gmail.com>) escribió:
>>>
>>>> Gracias Carlos,
>>>>
>>>> Si, quizas no lo explique bien, lo fundamental y es donde se tarda
>>>> mucho tiempod e cpu, es el bucle FOR, que tiene que recorrer una matriz
>>>> desde 1 hasta totcluy, entendiendo que la variable totclu puede ser por
>>>> ejemplo 10.000, lo que quiere decir que por cada fila tiene que realizar el
>>>> calculo que he puesto en el FOR que tampoco es demasiado pero logicamente
>>>> tiene que recorrer por ejemplo en este caso 10.000 columnas
>>>> A su vez el whil

Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-22 Thread Carlos Santos
Perdón he puesto 2000 columnas pero quería decir 2000 filas

El mié., 22 sept. 2021 18:34, Carlos Santos 
escribió:

> ok Carlos, pongo un ejemplo con pocos registros a ver si puedo explicarlo
> mejor:
>
> Datos:
> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
> 1 63 1 1 145 A 233 1 2 3 0
> 2 67 1 4 160 A 286 0 2 2 3
> 3 67 2 4 120 B 229 0 2 2 2
> 4 37 1 3 130 C 250 0 0 3 0
> 5 41 1 2 130 C 204 0 2 1 0
> 6 56 2 2 120 A 236 0 0 1 0
> 7 62 1 4 140 B 268 0 2 3 2
> 8 57 2 4 120 C 354 0 0 1 0
> 9 63 2 4 130 A 254 0 2 2 1
> 10 53 1 4 140 B 203 1 2 3 0
> 11 57 2 4 140 B 192 0 0 2 0
> 12 56 1 2 140 A 294 0 2 2 0
> 13 56 2 3 130 C 256 1 2 2 1
> 14 44 2 2 120 B 263 0 0 1 0
> 15 52 2 3 172 B 199 1 0 1 0
>
> tengo la matriz que sale de V5:
> A
> B
> C
>
> junto las filas de A con B, y obtengo el punto respecto de V2, y me da
> (0.33, 0.67), puesto que V2 tiene dos valores, es un porcentaje en
> definitiva
> junto las filas de A con C, y se obtiene el punto (0.5, 0.5)
> obtengo la distancia euclidea de dichos puntos sobre el punto definido,
> supongamos (0.34, 066),  lo que significa que la menor distancia se obtiene
> entre A y B, por lo tanto las filas que tienen A en V5 se cambia su valor a
> C, y se obtiene la siguiente matriz, donde V5 ya no tiene la A
> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
> 1 63 1 1 145 C 233 1 2 3 0
> 2 67 1 4 160 C 286 0 2 2 3
> 3 67 2 4 120 B 229 0 2 2 2
> 4 37 1 3 130 C 250 0 0 3 0
> 5 41 1 2 130 C 204 0 2 1 0
> 6 56 2 2 120 C 236 0 0 1 0
> 7 62 1 4 140 B 268 0 2 3 2
> 8 57 2 4 120 C 354 0 0 1 0
> 9 63 2 4 130 C 254 0 2 2 1
> 10 53 1 4 140 B 203 1 2 3 0
> 11 57 2 4 140 B 192 0 0 2 0
> 12 56 1 2 140 C 294 0 2 2 0
> 13 56 2 3 130
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-23 Thread Carlos Santos
Hola de nuevo, nadie tiene alguna idea que pueda ayudarme?, alguna
sugerencia posible? cualquier cosa me puede ayudar por favor.
muchas gracias





El mié, 22 sept 2021 a las 18:34, Carlos Santos ()
escribió:

> ok Carlos, pongo un ejemplo con pocos registros a ver si puedo explicarlo
> mejor:
>
> Datos:
> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
> 1 63 1 1 145 A 233 1 2 3 0
> 2 67 1 4 160 A 286 0 2 2 3
> 3 67 2 4 120 B 229 0 2 2 2
> 4 37 1 3 130 C 250 0 0 3 0
> 5 41 1 2 130 C 204 0 2 1 0
> 6 56 2 2 120 A 236 0 0 1 0
> 7 62 1 4 140 B 268 0 2 3 2
> 8 57 2 4 120 C 354 0 0 1 0
> 9 63 2 4 130 A 254 0 2 2 1
> 10 53 1 4 140 B 203 1 2 3 0
> 11 57 2 4 140 B 192 0 0 2 0
> 12 56 1 2 140 A 294 0 2 2 0
> 13 56 2 3 130 C 256 1 2 2 1
> 14 44 2 2 120 B 263 0 0 1 0
> 15 52 2 3 172 B 199 1 0 1 0
>
> tengo la matriz que sale de V5:
> A
> B
> C
>
> junto las filas de A con B, y obtengo el punto respecto de V2, y me da
> (0.33, 0.67), puesto que V2 tiene dos valores, es un porcentaje en
> definitiva
> junto las filas de A con C, y se obtiene el punto (0.5, 0.5)
> obtengo la distancia euclidea de dichos puntos sobre el punto definido,
> supongamos (0.34, 066),  lo que significa que la menor distancia se obtiene
> entre A y B, por lo tanto las filas que tienen A en V5 se cambia su valor a
> C, y se obtiene la siguiente matriz, donde V5 ya no tiene la A
> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
> 1 63 1 1 145 C 233 1 2 3 0
> 2 67 1 4 160 C 286 0 2 2 3
> 3 67 2 4 120 B 229 0 2 2 2
> 4 37 1 3 130 C 250 0 0 3 0
> 5 41 1 2 130 C 204 0 2 1 0
> 6 56 2 2 120 C 236 0 0 1 0
> 7 62 1 4 140 B 268 0 2 3 2
> 8 57 2 4 120 C 354 0 0 1 0
> 9 63 2 4 130 C 254 0 2 2 1
> 10 53 1 4 140 B 203 1 2 3 0
> 11 57 2 4 140 B 192 0 0 2 0
> 12 56 1 2 140 C 294 0 2 2 0
> 13 56 2 3 130 C 256 1 2 2 1
> 14 44 2 2 120 B 263 0 0 1 0
> 15 52 2 3 172 B 199 1 0 1 0
> en este ejemplo el while seria 2, es decir que se pararía puesto que solo
> tengo dos valore en V5
>
> Evidentemente cuando tengo 100.000 filas con 100 columnas y tengo la
> matriz intermedia que he puesto en este ejemplo con letras de 2000 filas,
> puesto no veo como consumir menos tiempo de ejecucion.
>
> espero que lo haya podido explicar mejor con este ejemplo.
>
> gracias de antemano Carlos
>
> El mié, 22 sept 2021 a las 17:48, Carlos Ortega ()
> escribió:
>
>> Vaya me cuesta verlo... :-)...
>>
>> ¿Puedes poner un ejemplo con números con los diferentes vectores con los
>> que partes y cómo vas rellenando esa matriz?
>> Y cómo quedaría al final..
>>
>> Gracias!
>> Carlos.
>>
>> El mié, 22 sept 2021 a las 16:01, Carlos Santos (<
>> carlossantos@gmail.com>) escribió:
>>
>>> jajajaja, perdón no te había entendido, lo siento
>>>
>>> a ver, de esta forma y para que sea fácil, supongamos esta matriz,
>>> evidentemente el problema lo tengo cuando esta matriz es muy grande claro.
>>> G1
>>> G2
>>> G3
>>> G4
>>> G5
>>> G6
>>> G7
>>> G8
>>> G9
>>> G10
>>> El while lo puse porque quite el for que tenia al principio para no
>>> poner muchos FOR anidados, por lo tanto el while va a ejecutar el FOR
>>> siguiente 7 veces
>>>
>>> El FOR lo que hace es ejecutarse 9 veces la primera vez, y agrupa los
>>> registros de G1 con cada uno de los otros grupos individualmente, calcula
>>> el porcentaje de elementos de cada nuevo grupo respecto a una de las
>>> variables del registro, por ejemplo supongamos que la variable tiene 2
>>> valores, obtenemos un punto (X,Y) que representa el porcentaje de cada
>>> valor que tiene la variable dentro de su nuevo grupo
>>> Lo mismo para el resto de nuevos grupos, y se calcula la distancia
>>> euclidea entre cada nuevo punto respecto de un punto predefinido.
>>>
>>> a continuación se haría tomando G2 con el resto descendente, y así
>>> sucesivamente hasta que el while ejecute en este ejemplo 7 veces = 10-3
>>>
>>> Quizas asi este mas claro, Carlos
>>>
>>>
>>>
>>>
>>>
>>> El mié, 22 sept 2021 a las 15:43, Carlos Ortega (<
>>> c...@qualityexcellence.es>) escribió:
>>>
>>>> Hola Carlos,
>>>>
>>>> Sí, si lo he entendido así.
>>>>
>>>> Lo que te propongo es que nos cuentes qué quieres hacer con esos dos
>>>> bucles o un bucle y un while. Porque a lo mejor se puede plantear otra
>>>> aproximación para actualizar cada elemento de la matriz.
>>>>
>>>> Gracias,
>>>> Car

Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-23 Thread Carlos Santos
Gracias Carlos, lo has entendido perfectamente

El punto definido que he puesto, no siempre tendrá esos mismos valores,

La columna V5 no siempre tendrá los mismos valores, pero puede valerme que
siempre tenga el mismo nombre de columna, por si eso puede ayudar, ya que
se puede cambiar el nombre de columna antes de llegar a esa rutina si fuese
necesario para que la rutina funcione mejor



El jue., 23 sept. 2021 19:49, Carlos Ortega 
escribió:

> Gracias Carlos!
>
> Que no dije nada :-).
> Creo que ya lo entiendo pero no he podido meterme con ello..
> A ver si mañana o este fin de semana encuentro un hueco para ver qué se me
> ocurre.
>
> Un par de dudas adicionales que me surgieron al ver el detalle de tu
> respuesta:
>
>- ¿Para el cálculo se usa siempre esa columna "V5" que es la que tiene
>las letras?.
>- Y claro el objetivo al final es que queda solo una letra tras entrar
>   a comparar todas las parejas posibles,¿es así?.
>- Y eso de la distancia a ese punto definido...
>   - El punto definido ¿es siempre que has indicado? (0.34, 0.66)?.
>
>
> Así, de primeras lo que veo es porqué hacen falta dos bucles o un bucle y
> un while.
> Parece más un proceso recursivo: comienzas con todos los pare de parejas,
> reduces y vuelves a aplicar el proceso de comparación con las que quedan.
> Por eso lo de aclarar la duda del primer punto anterior.
>
> Gracias,
> Carlos.
>
> El mié, 22 sept 2021 a las 18:38, Carlos Santos (<
> carlossantos@gmail.com>) escribió:
>
>> Perdón he puesto 2000 columnas pero quería decir 2000 filas
>>
>> El mié., 22 sept. 2021 18:34, Carlos Santos 
>> escribió:
>>
>>> ok Carlos, pongo un ejemplo con pocos registros a ver si puedo
>>> explicarlo mejor:
>>>
>>> Datos:
>>> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
>>> 1 63 1 1 145 A 233 1 2 3 0
>>> 2 67 1 4 160 A 286 0 2 2 3
>>> 3 67 2 4 120 B 229 0 2 2 2
>>> 4 37 1 3 130 C 250 0 0 3 0
>>> 5 41 1 2 130 C 204 0 2 1 0
>>> 6 56 2 2 120 A 236 0 0 1 0
>>> 7 62 1 4 140 B 268 0 2 3 2
>>> 8 57 2 4 120 C 354 0 0 1 0
>>> 9 63 2 4 130 A 254 0 2 2 1
>>> 10 53 1 4 140 B 203 1 2 3 0
>>> 11 57 2 4 140 B 192 0 0 2 0
>>> 12 56 1 2 140 A 294 0 2 2 0
>>> 13 56 2 3 130 C 256 1 2 2 1
>>> 14 44 2 2 120 B 263 0 0 1 0
>>> 15 52 2 3 172 B 199 1 0 1 0
>>>
>>> tengo la matriz que sale de V5:
>>> A
>>> B
>>> C
>>>
>>> junto las filas de A con B, y obtengo el punto respecto de V2, y me da
>>> (0.33, 0.67), puesto que V2 tiene dos valores, es un porcentaje en
>>> definitiva
>>> junto las filas de A con C, y se obtiene el punto (0.5, 0.5)
>>> obtengo la distancia euclidea de dichos puntos sobre el punto definido,
>>> supongamos (0.34, 066),  lo que significa que la menor distancia se obtiene
>>> entre A y B, por lo tanto las filas que tienen A en V5 se cambia su valor a
>>> C, y se obtiene la siguiente matriz, donde V5 ya no tiene la A
>>> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
>>> 1 63 1 1 145 C 233 1 2 3 0
>>> 2 67 1 4 160 C 286 0 2 2 3
>>> 3 67 2 4 120 B 229 0 2 2 2
>>> 4 37 1 3 130 C 250 0 0 3 0
>>> 5 41 1 2 130 C 204 0 2 1 0
>>> 6 56 2 2 120 C 236 0 0 1 0
>>> 7 62 1 4 140 B 268 0 2 3 2
>>> 8 57 2 4 120 C 354 0 0 1 0
>>> 9 63 2 4 130 C 254 0 2 2 1
>>> 10 53 1 4 140 B
>>>
>>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-23 Thread Carlos Santos
Exacto, eso es Carlos

El jue., 23 sept. 2021 20:04, Carlos Ortega 
escribió:

> OK. Gracias.
>
> Sí, bueno lo del nombre de V5 o el que sea efectivamente da igual, ¿pero
> es siempre una única columna por la que hay que agrupar?.
> Y luego en esa columna ¿se ha de iterar hasta que quede solo una letra?
> (letra o el factor que sea).
>
> Gracias!
> Carlos.
>
> El jue, 23 sept 2021 a las 20:00, Carlos Santos (<
> carlossantos@gmail.com>) escribió:
>
>> Gracias Carlos, lo has entendido perfectamente
>>
>> El punto definido que he puesto, no siempre tendrá esos mismos valores,
>>
>> La columna V5 no siempre tendrá los mismos valores, pero puede valerme
>> que siempre tenga el mismo nombre de columna, por si eso puede ayudar, ya
>> que se puede cambiar el nombre de columna antes de llegar a esa rutina si
>> fuese necesario para que la rutina funcione mejor
>>
>>
>>
>> El jue., 23 sept. 2021 19:49, Carlos Ortega 
>> escribió:
>>
>>> Gracias Carlos!
>>>
>>> Que no dije nada :-).
>>> Creo que ya lo entiendo pero no he podido meterme con ello..
>>> A ver si mañana o este fin de semana encuentro un hueco para ver qué se
>>> me ocurre.
>>>
>>> Un par de dudas adicionales que me surgieron al ver el detalle de tu
>>> respuesta:
>>>
>>>- ¿Para el cálculo se usa siempre esa columna "V5" que es la que
>>>tiene las letras?.
>>>- Y claro el objetivo al final es que queda solo una letra tras
>>>   entrar a comparar todas las parejas posibles,¿es así?.
>>>- Y eso de la distancia a ese punto definido...
>>>   - El punto definido ¿es siempre que has indicado? (0.34, 0.66)?.
>>>
>>>
>>> Así, de primeras lo que veo es porqué hacen falta dos bucles o un bucle
>>> y un while.
>>> Parece más un proceso recursivo: comienzas con todos los pare de
>>> parejas, reduces y vuelves a aplicar el proceso de comparación con las que
>>> quedan.
>>> Por eso lo de aclarar la duda del primer punto anterior.
>>>
>>> Gracias,
>>> Carlos.
>>>
>>> El mié, 22 sept 2021 a las 18:38, Carlos Santos (<
>>> carlossantos@gmail.com>) escribió:
>>>
>>>> Perdón he puesto 2000 columnas pero quería decir 2000 filas
>>>>
>>>> El mié., 22 sept. 2021 18:34, Carlos Santos 
>>>> escribió:
>>>>
>>>>> ok Carlos, pongo un ejemplo con pocos registros a ver si puedo
>>>>> explicarlo mejor:
>>>>>
>>>>> Datos:
>>>>> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
>>>>> 1 63 1 1 145 A 233 1 2 3 0
>>>>> 2 67 1 4 160 A 286 0 2 2 3
>>>>> 3 67 2 4 120 B 229 0 2 2 2
>>>>> 4 37 1 3 130 C 250 0 0 3 0
>>>>> 5 41 1 2 130 C 204 0 2 1 0
>>>>> 6 56 2 2 120 A 236 0 0 1 0
>>>>> 7 62 1 4 140 B 268 0 2 3 2
>>>>> 8 57 2 4 120 C 354 0 0 1 0
>>>>> 9 63 2 4 130 A 254 0 2 2 1
>>>>> 10 53 1 4 140 B 203 1 2 3 0
>>>>> 11 57 2 4 140 B 192 0 0 2 0
>>>>> 12 56 1 2 140 A 294 0 2 2 0
>>>>> 13 56 2 3 130 C 256 1 2 2 1
>>>>> 14 44 2 2 120 B 263 0 0 1 0
>>>>> 15 52 2 3 172 B 199 1 0 1 0
>>>>>
>>>>> tengo la matriz que sale de V5:
>>>>> A
>>>>> B
>>>>> C
>>>>>
>>>>> junto las filas de A con B, y obtengo el punto respecto de V2, y me da
>>>>> (0.33, 0.67), puesto que V2 tiene dos valores, es un porcentaje en
>>>>> definitiva
>>>>> junto las filas de A con C, y se obtiene el punto (0.5, 0.5)
>>>>> obtengo la distancia euclidea de dichos puntos sobre el punto
>>>>> definido, supongamos (0.34, 066),  lo que significa que la menor distancia
>>>>> se obtiene entre A y B, por lo tanto las filas que tienen A en V5 se 
>>>>> cambia
>>>>> su valor a C, y se obtiene la siguiente matriz, donde V5 ya no tiene la A
>>>>> V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
>>>>> 1 63 1 1 145 C 233 1 2 3 0
>>>>> 2 67 1 4 160 C 286 0 2 2 3
>>>>> 3 67 2 4 120 B 229 0 2 2 2
>>>>> 4 37 1 3 130 C 250 0 0 3 0
>>>>> 5 41 1 2 130 C 204 0 2 1 0
>>>>> 6 56 2 2 120 C 236 0 0 1 0
>>>>> 7 62 1 4 140 B 268 0 2 3 2
>>>>> 8 57 2 4 120 C 354 0 0 1 0
>>>>> 9 63 2 4 130 C 254 0 2 2
>>>>>
>>>>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Resumen de R-help-es, Vol 151, Envío 14

2021-09-23 Thread Carlos Santos
Gracias Patricio, también es buena idea, no he usado nunca C con R, pero es
fácil porque al final es el mismo código de R, cambiando la llamada a la
funcion
Muchísimas gracias



El jue., 23 sept. 2021 20:20, patricio fuenmayor <
patricio.fuenma...@gmail.com> escribió:

> Yo lo pasaría a data.table ... es más eficiente administrando datos. Y
> analizar si se puede usar furrr.
> Si no funciona, siempres está el buen RCPP
>
> Saludos.
>
>
> El jue, 23 de sep. de 2021 a la(s) 13:11, 
> escribió:
>
>> Envíe los mensajes para la lista R-help-es a
>> r-help-es@r-project.org
>>
>> Para subscribirse o anular su subscripción a través de la WEB
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>> O por correo electrónico, enviando un mensaje con el texto "help" en
>> el asunto (subject) o en el cuerpo a:
>> r-help-es-requ...@r-project.org
>>
>> Puede contactar con el responsable de la lista escribiendo a:
>> r-help-es-ow...@r-project.org
>>
>> Si responde a algún contenido de este mensaje, por favor, edite la
>> linea del asunto (subject) para que el texto sea mas especifico que:
>> "Re: Contents of R-help-es digest...". Además, por favor, incluya en
>> la respuesta sólo aquellas partes del mensaje a las que está
>> respondiendo.
>> Asuntos del día:
>>
>>1. Re:   problema de tiempo de ejecución con una rutina dentro de
>>   un programa de R (Carlos Santos)
>>2. Re:   problema de tiempo de ejecución con una rutina dentro de
>>   un programa de R (Carlos Santos)
>>3. Re:   problema de tiempo de ejecución con una rutina dentro de
>>   un programa de R (Carlos Santos)
>>
>>
>> -- Forwarded message --
>> From: Carlos Santos 
>> To: Lista R 
>> Cc:
>> Bcc:
>> Date: Thu, 23 Sep 2021 17:10:41 +0200
>> Subject: Re: [R-es] problema de tiempo de ejecución con una rutina dentro
>> de un programa de R
>> Hola de nuevo, nadie tiene alguna idea que pueda ayudarme?, alguna
>> sugerencia posible? cualquier cosa me puede ayudar por favor.
>> muchas gracias
>>
>>
>>
>>
>>
>> El mié, 22 sept 2021 a las 18:34, Carlos Santos (<
>> carlossantos@gmail.com>)
>> escribió:
>>
>> > ok Carlos, pongo un ejemplo con pocos registros a ver si puedo
>> explicarlo
>> > mejor:
>> >
>> > Datos:
>> > V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
>> > 1 63 1 1 145 A 233 1 2 3 0
>> > 2 67 1 4 160 A 286 0 2 2 3
>> > 3 67 2 4 120 B 229 0 2 2 2
>> > 4 37 1 3 130 C 250 0 0 3 0
>> > 5 41 1 2 130 C 204 0 2 1 0
>> > 6 56 2 2 120 A 236 0 0 1 0
>> > 7 62 1 4 140 B 268 0 2 3 2
>> > 8 57 2 4 120 C 354 0 0 1 0
>> > 9 63 2 4 130 A 254 0 2 2 1
>> > 10 53 1 4 140 B 203 1 2 3 0
>> > 11 57 2 4 140 B 192 0 0 2 0
>> > 12 56 1 2 140 A 294 0 2 2 0
>> > 13 56 2 3 130 C 256 1 2 2 1
>> > 14 44 2 2 120 B 263 0 0 1 0
>> > 15 52 2 3 172 B 199 1 0 1 0
>> >
>> > tengo la matriz que sale de V5:
>> > A
>> > B
>> > C
>> >
>> > junto las filas de A con B, y obtengo el punto respecto de V2, y me da
>> > (0.33, 0.67), puesto que V2 tiene dos valores, es un porcentaje en
>> > definitiva
>> > junto las filas de A con C, y se obtiene el punto (0.5, 0.5)
>> > obtengo la distancia euclidea de dichos puntos sobre el punto definido,
>> > supongamos (0.34, 066),  lo que significa que la menor distancia se
>> obtiene
>> > entre A y B, por lo tanto las filas que tienen A en V5 se cambia su
>> valor a
>> > C, y se obtiene la siguiente matriz, donde V5 ya no tiene la A
>> > V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
>> > 1 63 1 1 145 C 233 1 2 3 0
>> > 2 67 1 4 160 C 286 0 2 2 3
>> > 3 67 2 4 120 B 229 0 2 2 2
>> > 4 37 1 3 130 C 250 0 0 3 0
>> > 5 41 1 2 130 C 204 0 2 1 0
>> > 6 56 2 2 120 C 236 0 0 1 0
>> > 7 62 1 4 140 B 268 0 2 3 2
>> > 8 57 2 4 120 C 354 0 0 1 0
>> > 9 63 2 4 130 C 254 0 2 2 1
>> > 10 53 1 4 140 B 203 1 2 3 0
>> > 11 57 2 4 140 B 192 0 0 2 0
>> > 12 56 1 2 140 C 294 0 2 2 0
>> > 13 56 2 3 130 C 256 1 2 2 1
>> > 14 44 2 2 120 B 263 0 0 1 0
>> > 15 52 2 3 172 B 199 1 0 1 0
>> > en este ejemplo el while seria 2, es decir que se pararía puesto que
>> solo
>> > tengo dos valore en V5
>> >
>> > Evidentemente cuando tengo 100.000 filas con 100 columnas y ten

Re: [R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R

2021-09-25 Thread Carlos Santos
Un millón de gracias Carlos, lo pruebo hoy sin falta, estaba precisamente
dando vueltas y mas vueltas con todo esto, porque me tiene un poco
angustiado.

En cuanto lo pruebe te escribo sin falta y te comento.

gracias de nuevo y un abrazo
Carlos





El sáb, 25 sept 2021 a las 13:35, Carlos Ortega ()
escribió:

> Hola,
>
> Lo siguiente como punto de partida creo que te puede ayudar.
>
> Hace lo que has comentado, aunque en el proceso me he encontrado con
> algunas dudas que he incluido en el codigo.
> He usado data.table (y su variante tidytable en modo dplyr) y stringi que
> dan ese punto de velocidad..
>
>
> #---
>
> # Library loading
> suppressPackageStartupMessages({
>   library(dplyr)
>   library(magrittr)
>   library(data.table)
>   library(tidytable)
>   library(stringi)
> })
>
> #- Data Loading
> Lines <- "V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
> 1 63 1 1 145 A 233 1 2 3 0
> 2 67 1 4 160 A 286 0 2 2 3
> 3 67 2 4 120 B 229 0 2 2 2
> 4 37 1 3 130 C 250 0 0 3 0
> 5 41 1 2 130 C 204 0 2 1 0
> 6 56 2 2 120 A 236 0 0 1 0
> 7 62 1 4 140 B 268 0 2 3 2
> 8 57 2 4 120 C 354 0 0 1 0
> 9 63 2 4 130 A 254 0 2 2 1
> 10 53 1 4 140 B 203 1 2 3 0
> 11 57 2 4 140 B 192 0 0 2 0
> 12 56 1 2 140 A 294 0 2 2 0
> 13 56 2 3 130 C 256 1 2 2 1
> 14 44 2 2 120 B 263 0 0 1 0
> 15 52 2 3 172 B 199 1 0 1 0"
>
> #- Get initial data.frame
> midt <- as.data.table(read.table(textConnection(Lines),  header = TRUE,
> as.is = TRUE))
>
> #- Get all pairs combinations
> pairs_val <- unique(midt$V5)
> comb_tmp <- as.data.frame(combn(pairs_val, 2))
>
> # References
> ref_val <- c(0.34, 0.66)
>
> #- Function for distances
> fun_dis <- function(x) {
>   dis_tmp <- sqrt((x[1] - ref_val[1])^2 + (x[2] - ref_val[2])^2)
>   return(dis_tmp)
> }
>
>
> #- Function to calculate percentages by V2.
> fun_compa <- function(comb_tmp, dt_one) {
>for (i in 1:ncol(comb_tmp)) {
>  val_one <- comb_tmp[1,i]
>  val_two <- comb_tmp[2,i]
>
>  dt_one <- midt[ V5 == val_one | V5 == val_two,  ]
> #--- Duda: Aquí  no sé si hay que sumar todas las columnas salvo la de
> las letras y la del grupo.
>  res_val <- dt_one[ , .(res_sum = sum(V1,V3,V4,V6,V7,V9,V9,V10)) , by
> = V2]
>  res_val %<>%
>mutate.(res_tot = sum(res_sum)) %>%
>mutate.(res_per = res_sum/res_tot) %>%
>select.(res_per)
>  dt_comp <- cbind(dt_comp, res_val)
>}
>   return(dt_comp)
> }
>
> #-- Process
> dt_comp <- data.table()
> for (i in 1:ncol(comb_tmp)) {
>   #--- Solo proceso las dos primeras combinaciones. No sé cómo hacer con
> las siguientes ya que desaparece "A".
>   res_tmp <- fun_compa(comb_tmp[,1:2], dt_one)
>   to_sust <- comb_tmp[, which.max(apply(res_tmp, 2, fun_dis))]
>   midt[ , V5 := stri_replace_all_fixed(V5, to_sust[1], to_sust[2])]
> }
>
> midt
> #---
>
> Gracias,
> Carlos Ortega
> www.qualityexcellence.es
>
> El jue, 23 sept 2021 a las 20:08, Carlos Santos (<
> carlossantos@gmail.com>) escribió:
>
>> Exacto, eso es Carlos
>>
>> El jue., 23 sept. 2021 20:04, Carlos Ortega 
>> escribió:
>>
>>> OK. Gracias.
>>>
>>> Sí, bueno lo del nombre de V5 o el que sea efectivamente da igual, ¿pero
>>> es siempre una única columna por la que hay que agrupar?.
>>> Y luego en esa columna ¿se ha de iterar hasta que quede solo una letra?
>>> (letra o el factor que sea).
>>>
>>> Gracias!
>>> Carlos.
>>>
>>> El jue, 23 sept 2021 a las 20:00, Carlos Santos (<
>>> carlossantos@gmail.com>) escribió:
>>>
>>>> Gracias Carlos, lo has entendido perfectamente
>>>>
>>>> El punto definido que he puesto, no siempre tendrá esos mismos valores,
>>>>
>>>> La columna V5 no siempre tendrá los mismos valores, pero puede valerme
>>>> que siempre tenga el mismo nombre de columna, por si eso puede ayudar, ya
>>>> que se puede cambiar el nombre de columna antes de llegar a esa rutina si
>>>> fuese necesario para que la rutina funcione mejor
>>>>
>>>>
>>>>
>>>> El jue., 23 sept. 2021 19:49, Carlos Ortega 
>>>> escribió:
>>>>
>>>>> Gracias Carlos!
>>>>>
>>>>> Que no dije nada :-).
>>>>> Creo que ya lo entiendo pero no he podido meterme con ello..
>>>>> A ver si mañana o este fin de semana encuentro un hueco para ver qué
>>>>> se me o

[R-es] Error in { : task 1 failed - "subscript out of bounds"

2021-10-31 Thread Carlos Santos
Hola, cono estan

Estoy haciendo un package y resulta que un bucle foreach, me da el error
de  subscript out of bounds, cuando le incluyo dentro del package el import
de las librerias

@ importFrom stats dist filter

Pero si no le incluyo el import, entonces el bucle funciona correctamente.
el problema es que si no le incluyo el importfrom correspondiente de esas
librerias, entonces al chequear el pakcage salen NOTES de que seria bueno
incluirlas.

Y en este punto, estoy perdido por mas que leo el bucle, a ver si alguien
me da luz en esta oscuridad en la que me encuentro.

Muchas gracias a todos, un saludo cordial

les incluyo el bucle:

 results1 <- foreach(i=1:rr, .combine = "c", .packages=c("foreach", "irr",
"magrittr", "stats", "dplyr")) %dopar% {
smc <- sum(data3[i,1:rr]==max(data3[i,1:rr]))
RECEPTOR <- as.data.frame(matrix(0, ncol=2, nrow = smc))
EMISOR <- data2[i,1]
RECEPTOR[,1] <- data2[which(as.vector(data3[i,])==max(data3[i,])),1]  #
cluster receptores con mayor coincidencia
for (y in smc) {
  RECEPTOR[y,2] <- data1[1:numvar+1] %>% filter(data1$Clus.Multi.OPTIMO
%in% c(EMISOR,RECEPTOR[y,1])) %>%
head() %>% kappam.fleiss() %$% value + 1
}
data4[i,1] <- as.numeric(which(data2[,1] ==
RECEPTOR[which.max(RECEPTOR[,2]),1]))[1]
  }

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Error subscript out of bounds

2021-10-31 Thread Carlos Santos
Hola a todos,

Estoy haciendo un package y resulta que un bucle foreach, me da el error
de  subscript out of bounds, cuando le incluyo dentro del package el import
de las librerias

@ importFrom stats dist filter

Pero si no le incluyo el import, entonces el bucle funciona correctamente.
el problema es que si no le incluyo el importfrom correspondiente de esas
librerias, entonces al chequear el pakcage salen NOTES de que seria bueno
incluirlas.

Y en este punto, estoy perdido por mas que leo el bucle, a ver si alguien
me da luz en esta oscuridad en la que me encuentro.

Muchas gracias a todos, un saludo cordial

les incluyo el bucle:

 results1 <- foreach(i=1:rr, .combine = "c", .packages=c("foreach", "irr",
"magrittr", "stats", "dplyr")) %dopar% {
smc <- sum(data3[i,1:rr]==max(data3[i,1:rr]))
RECEPTOR <- as.data.frame(matrix(0, ncol=2, nrow = smc))
EMISOR <- data2[i,1]
RECEPTOR[,1] <- data2[which(as.vector(data3[i,])==max(data3[i,])),1]  #
cluster receptores con mayor coincidencia
for (y in smc) {
  RECEPTOR[y,2] <- data1[1:numvar+1] %>% filter(data1$Clus.Multi.OPTIMO
%in% c(EMISOR,RECEPTOR[y,1])) %>%
head() %>% kappam.fleiss() %$% value + 1
}
data4[i,1] <- as.numeric(which(data2[,1] ==
RECEPTOR[which.max(RECEPTOR[,2]),1]))[1]
  }

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] Error - subscript out of bounds

2021-11-01 Thread Carlos Santos
Hola, cono estan

Estoy haciendo un package y resulta que un bucle foreach, me da el error
de  subscript out of bounds, cuando le incluyo dentro del package el import
de las librerias

@ importFrom stats dist filter

Pero si no le incluyo el import, entonces el bucle funciona correctamente.
el problema es que si no le incluyo el importfrom correspondiente de esas
librerias, entonces al chequear el pakcage salen NOTES de que seria bueno
incluirlas.

Y en este punto, estoy perdido por mas que leo el bucle, a ver si alguien
me da luz en esta oscuridad en la que me encuentro.

Muchas gracias a todos, un saludo cordial

les incluyo el bucle:

 results1 <- foreach(i=1:rr, .combine = "c", .packages=c("foreach", "irr",
"magrittr", "stats", "dplyr")) %dopar% {
smc <- sum(data3[i,1:rr]==max(data3[i,1:rr]))
RECEPTOR <- as.data.frame(matrix(0, ncol=2, nrow = smc))
EMISOR <- data2[i,1]
RECEPTOR[,1] <- data2[which(as.vector(data3[i,])==max(data3[i,])),1]  #
cluster receptores con mayor coincidencia
for (y in smc) {
  RECEPTOR[y,2] <- data1[1:numvar+1] %>% filter(data1$Clus.Multi.OPTIMO
%in% c(EMISOR,RECEPTOR[y,1])) %>%
head() %>% kappam.fleiss() %$% value + 1
}
data4[i,1] <- as.numeric(which(data2[,1] ==
RECEPTOR[which.max(RECEPTOR[,2]),1]))[1]
  }

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Error - subscript out of bounds

2021-11-02 Thread Carlos Santos
grande Diego grande, si señor, u estaba medio loco y no sabia por donde
tirar

Ahora si funciono todo, ya no da el error y ya ajuste los import, dplyr ya
lo tenia pero no apuntaba el filter y tampoco ya da el aviso de NOTE claro

Un millón de gracias Diego,

un saludo cordial
Carlos




El mar, 2 nov 2021 a las 17:42, Diego Hernangómez Herrero (<
diego.hernangomezherr...@gmail.com>) escribió:

>
> Buenas,
>
> Puede ser que el filter que esté aplicando en tu función sea el de dplyr?
>
>
> Tienes la opción de llamar la función con stats::filter en lugar de
> filter, y no importarla. Yo probaría tu función sustituyendo el filter con
> dplyr::filter y stats::filter, para empezar a entender exactamente la
> función que estás llamando.
>
> En cuanto a la NOTE, una vez que tengas identificada la función filter,
> añade el paquete (dplyr or stats) en DESCRIPTION Imports
>
> El El mar, 2 nov 2021 a las 7:05, Carlos Santos <
> carlossantos@gmail.com> escribió:
>
>> Hola, cono estan
>>
>> Estoy haciendo un package y resulta que un bucle foreach, me da el error
>> de  subscript out of bounds, cuando le incluyo dentro del package el
>> import
>> de las librerias
>>
>> @ importFrom stats dist filter
>>
>> Pero si no le incluyo el import, entonces el bucle funciona correctamente.
>> el problema es que si no le incluyo el importfrom correspondiente de esas
>> librerias, entonces al chequear el pakcage salen NOTES de que seria bueno
>> incluirlas.
>>
>> Y en este punto, estoy perdido por mas que leo el bucle, a ver si alguien
>> me da luz en esta oscuridad en la que me encuentro.
>>
>> Muchas gracias a todos, un saludo cordial
>>
>> les incluyo el bucle:
>>
>>  results1 <- foreach(i=1:rr, .combine = "c", .packages=c("foreach", "irr",
>> "magrittr", "stats", "dplyr")) %dopar% {
>> smc <- sum(data3[i,1:rr]==max(data3[i,1:rr]))
>> RECEPTOR <- as.data.frame(matrix(0, ncol=2, nrow = smc))
>> EMISOR <- data2[i,1]
>> RECEPTOR[,1] <- data2[which(as.vector(data3[i,])==max(data3[i,])),1]
>> #
>> cluster receptores con mayor coincidencia
>> for (y in smc) {
>>   RECEPTOR[y,2] <- data1[1:numvar+1] %>%
>> filter(data1$Clus.Multi.OPTIMO
>> %in% c(EMISOR,RECEPTOR[y,1])) %>%
>> head() %>% kappam.fleiss() %$% value + 1
>> }
>> data4[i,1] <- as.numeric(which(data2[,1] ==
>> RECEPTOR[which.max(RECEPTOR[,2]),1]))[1]
>>   }
>>
>> [[alternative HTML version deleted]]
>>
>> ___
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
> --
>
>
>
> Have a nice day!
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] saben si el paquete kmeans++ funciona en R?

2021-11-20 Thread Carlos Santos
Hola a todos,

Queria preguntarles si saben por casualidad si el paquete kmeans++ funciona
en R o solo en Python, y si funciona en R, saben como se llama la
libreria para cargarlo, porque he estado buscando pero no veo nada por
ningun lado.

El hermano de este, osea el kmeans, ya se que funciona y esta dentro de R,
pero no veo nada sobre este otro

Muchas gracias por vuestra gran ayuda

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] saben si el paquete kmeans++ funciona en R?

2021-11-21 Thread Carlos Santos
Genial
Muchas gracias Carlos
Un placer como siempre saludarte



El dom., 21 nov. 2021 11:36, Carlos Ortega 
escribió:

> Hola Carlos,
>
> Sí, lo tienes en el paquete LICORS:
>
>- https://rdrr.io/cran/LICORS/man/kmeanspp.html
>
> Gracias,
> Carlos Ortega
> www.qualityexcellence.es
>
> El dom, 21 nov 2021 a las 8:12, Carlos Santos ()
> escribió:
>
>> Hola a todos,
>>
>> Queria preguntarles si saben por casualidad si el paquete kmeans++
>> funciona
>> en R o solo en Python, y si funciona en R, saben como se llama la
>> libreria para cargarlo, porque he estado buscando pero no veo nada por
>> ningun lado.
>>
>> El hermano de este, osea el kmeans, ya se que funciona y esta dentro de R,
>> pero no veo nada sobre este otro
>>
>> Muchas gracias por vuestra gran ayuda
>>
>> [[alternative HTML version deleted]]
>>
>> ___
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es