[R-es] Operaciones con Arrays...creo.

Juan Abasolo ju@n@@b@@olo @ending from ehu@eu@
Jue Jul 5 12:24:41 CEST 2018


Muchas gracias, nuevamente, Javier.
Me obligás a aprender... pero me parece que no llego tan rápido como
querría y el reloj corre.

Probé con ejemplo que vos ponés  en función de mi array, y no hay manera de
que yo lo consiga.
Supuse que habría alguna función simple que sumara, digamos, el eje *z*.

Supongo que terminaré haciendo algo así como tres for anidados, para que
vaya haciendo vectores con cada posicion de cada data frame/nivel en *z*.

Me parece que es medio como cuando mi hijito para contestar cuanto es 5 x 5
va diciendo: uno, dos, tres... veinticuatro, venticinco y ventiseis! Por
suerte R cuenta mejor.

2018-07-05 0:07 GMT+02:00 Javier Marcuzzi <javier.ruben.marcuzzi using gmail.com>:

> Estimado Juan Abasolo
>
> Si en su mente puede organizarlo en matrices, utilice su pensamiento, eso
> no es malo, pero si piensa en matrices utilice for, if, algunos índices
> para acceder a lugares específicos, pase lo que está en lapply a un ciclo
> for, todo en matrices, si salta de una forma de almacenamiento a otra,
> aunque se pueda, también puede aumentar los errores y enredos.
>
> Si hay algo en R que surge de una búsqueda, puede llegar a acceder a los
> códigos fuentes desde los repositorios, hay cosas que yo copie y pegué
> desde los repositorios en lugar de instalar el paquete, me di cuenta como
> funcionaba, lo mejoré para mis requerimientos particulares, y por suerte
> porque esa librería se descontinuó. Hoy por usar lo más básico en R puedo
> procesar la información aunque el paquete original ya no esté disponible.
>
> Si en su cabeza está la idea, pase a un código lo más simple posible,
> matrices, ciclos, funciones escritas por usted o librerías específicas pero
> muy generales como matrix, donde es específico para matrices pero
> independiente a otra área de la ciencia, daría lo mismo para energía
> nuclear que para economía, es una operación con matrices.
>
> Debe haber en español, un ejemplo como https://www.math.uh.edu/~
> jmorgan/Math6397/day13/LinearAlgebraR-Handout.pdf, para mí es una sobre
> exigencia, aunque si eso no se conoce es como utilizar una calculadora sin
> saber sumar con lápiz y papel, pero también es cierto que es posible con
> matrices, no cualquiera puede pensar a ese nivel.
>
> Por las dudas, copie y pegue el siguiente ejemplo, posiblemente seleccionó
> mal la función pero el pensamiento que usted tuvo es correcto. Si funciona
> evita el ciclo for.
>
> m <- array(1:24, c(4,3,2))
> m
> apply(m, c(2,3), mean)
>
> Javier Rubén Marcuzzi
>
> El mié., 4 jul. 2018 a las 18:17, Juan Abasolo (<juan.abasolo using ehu.eus>)
> escribió:
>
>> Muchas gracias, Javier, por tu respuesta.
>> Me sobrevalorás. Mi última clase de matemática como tal fue en 4º de
>> secundaria, y era la matemática que nos daban a los de letras. Ni te cuento
>> hace cuántos años. No puedo seguir la mayoría de lo que comentás sin hacer
>> un trabajo forense. Así que agarré lo que entendí... y me parece que, o lo
>> que yo quiero hacer son matrices de tres dimensiones (si es que eso
>> existe), pero no soy capaz de identificar en el link que me pasaste, rasqué
>> un poco las viñetas y no lo vi.
>>
>> Lo de usar arrays es porque creí que esa era la manera de pensar en datos
>> en tres dimensiones, ya que me resultaba evidente que mi lista de matrices
>> no la podía usar para operar algo como me lo venía dibujando. Pero todo el
>> tiempo es seguir a la intuición, sabiendo poco... caigo en el pozo.
>>
>> Capaz que lo que tengo que hacer no es siguiendo ese orden sino otro y
>> alguna otra lógica:
>>
>> 1- De Partida:- Tengo un df con unos pocos casos y un montón de
>> variables...
>> 2- Consigo: ... de las que saco sus distancias, variable a variable, que
>> me las devuelve en matrices cuadradas con diagonal 0. Como es con lapply,
>> me lo da en una lista
>> 3- Quiero sacar la (matriz de) distancia media de todas esas distancias
>> puntuales.
>>  Y por eso, pensé en hacer un objeto de tres dimensiones con el que
>> operar. Pero ni idea de eso cómo se formula en "dialecto" matemático.
>> Aposté por *array*.
>>
>> Querría construirlo en R, porque me resulta evidente cómo aplicarlo en la
>> investigación que tengo entre manos, y, si funciona, sería aplicable más o
>> menos fácilmente, me/nos podemos centrar en afinar la teoría, la búsqueda
>> de nuevos datos, etc.
>>
>>
>>
>>
>>
>> 2018-07-04 17:10 GMT+02:00 Javier Marcuzzi <javier.ruben.marcuzzi using gmail.
>> com>:
>>
>>> Estimado Juan Abasolo
>>>
>>> Posiblemente lo que usted desea está en https://cran.r-project.org/
>>> web/packages/Matrix/index.html, pero yo también en su momento me puse a
>>> escribir muchas cosas que ya existían y lo realizaba para aprender
>>> (posiblemente todo el que desee aprender correctamente debe intentar
>>> escribir funciones desde cero).
>>>
>>> Yo no vengo de una universidad donde la matemática y álgebra es el
>>> fuerte, lógicamente por la carrera, por lo cuál para trabajar con matrices
>>> tube que poner muchísimo de mi parte, y uno de los errores que yo cometí
>>> fue colocar ceros en lugar de NA y R no me daba, luego mi profesora de
>>> matemática cuándo vio mi error casi tiene un paro cardíaco. El trabajar con
>>> matrices está muy bien y es potente, pero para realizar un cálculo utilizar
>>> data.frame es mucho más cómodo con R, mi pensamiento es: si ne necesita
>>> álgebra utilizar matrices, si se necesita trabajar sobre datos y hay una
>>> librería o función en R, utilizar una forma de almacenar más amigable.
>>>
>>> Si usted lo desea puedo buscar un curso de R donde todo está con
>>> matrices (si la universidad de Canadá no lo quitó de internet), serán como
>>> 400 hojas en total, donde algo de 20 o 30 líneas en matrices luego está
>>> escrito en funciones específicas de R ocupando dos o tres renglones, y lo
>>> asombroso es en el tiempo que demora la computadora en realizar los
>>> cálculos, lógicamente hay funciones donde se prepara la matriz, otra donde
>>> se escribe como calcular, mucho más lindo para mostrar todo el trabajo pero
>>> lento en ejecutar y en tiempo humano el esfuerzo es mayor.
>>>
>>> En la dirección que le envío hay algunos ejemplos sobre cómo realizar
>>> algunos cálculos con matrices y el autor es el mismo de lme4, yo esquivaría
>>> los array o matrices, aunque en R la diferencia entre estos esta en las
>>> dimensiones, iría a los formatos de datos más nativos para R, como son
>>> data.frame o listas, mire por ejemplo lapply, la letra l lleva a lista,
>>> cuándo escribieron la función los programadores tenían en mente la lista o
>>> data.frames antes que matrices para acomodar los datos, y el concepto de la
>>> facultad sobre matrices cuándo me lo explicaron es que era una método de
>>> acomodar la información, desconozco la definición matemática correcta, pero
>>> es la forma en que yo comencé a aprender, y para acomodar datos en R y
>>> realizar algunas operaciones, matrices no es lo más cómodo, aunque también
>>> es cierto que mi profesor de genética cuándo me enseñaba Fortran me hacía
>>> leer un libro en basic donde había matrices y conocí BLAS, es el origen,
>>> pero no lo más práctico, matemáticamente es muy lindo utilizar matrices y
>>> se ve bien al correr en la computadora, pero lleva mucho tiempo y esfuerzo.
>>> Piense que en el código que usted envía hay tres renglones, y en dos
>>> utiliza as.matrix, as.array, as.list, usted está forzando muchas
>>> conversiones, no digo que no se pueda, pero si estandariza a un tipo de
>>> datos esas tres conversiones son menos trabajo para la computadora.
>>>
>>> Javier Rubén Marcuzzi
>>>
>>> El mié., 4 jul. 2018 a las 8:29, Juan Abasolo (<juan.abasolo using ehu.eus>)
>>> escribió:
>>>
>>>> Buenas,
>>>> Sigo aprobechando par aaprender en las vacaciones de alumnos y
>>>> nuevamente
>>>> recurro a Uds. Sé que la perspectiva puede ser erronea, o sea que les
>>>> pido
>>>> que entiendan lo que quiero decir, más que lo que digo.
>>>>
>>>> Tengo una lista de matrices todas de idénticas dimensiones, y necesito
>>>> hacer operaciones entre ellas.
>>>>
>>>> Ocurrencia: creí que podría hacer un array, de tal manera que , así como
>>>> puedo hacer un colsum para reducir dos dimensiones en una, podría hacer
>>>> un
>>>> queséyoquéSum que me dejase el array en una matriz de resultados.
>>>>
>>>> Mis datos tienen una pinta, más o menos así:
>>>>
>>>> # Unas matrices de distancias hechas df
>>>> fejemplo <- function(x)as.matrix(dist(x))
>>>> miarray <- as.array(lapply(as.list(airquality[,2:4]), fejemplo))
>>>>
>>>> # Ensoñaciones
>>>> miarraydemedias <- sumenselaspilasydividanseporn(miarray)
>>>>
>>>> En este ejemplo no conseguí dejar vacios los valores NA, pero sí los
>>>> NaN en
>>>> los míos. Magia?
>>>> Lo remarco porque, además de sumas de matrices, también querría
>>>> calcular la
>>>> matriz media de todos los datos.
>>>>
>>>> Paciencia,por favor, soy un intruso autodidacta. Y muchas gracias
>>>>
>>>>
>>>> --
>>>> 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]]
>>>>
>>>> _______________________________________________
>>>> R-help-es mailing list
>>>> R-help-es using r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>
>>>
>>
>>
>> --
>> Juan Abasolo
>>
>> Hizkuntzaren eta Literaturaren Didaktika Saila
>> Bilboko Hezkuntza Fakultatea
>> Euskal Herriko Unibertsitatea
>> UPV/EHU
>>
>> Sarriena auzoa z/g
>> 48940 Leioa
>> Bizkaia
>>
>


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