[R-es] Expresión en un objeto

Manuel Mendoza mmendoz@ @end|ng |rom |u|br|ghtm@||@org
Sab Ago 12 05:07:26 CEST 2023


No tuve tiempo de mirarlo, pero, ¿es coherente lo que dice?

El vie, 11 ago 2023 a las 21:02, Griera-yandex (<griera using yandex.com>)
escribió:

> Muchas gracias, Manuel:
>
> Que bueno! No se me había ocurrido lo de GPT!
>
> Lo pruebo.
>
> Saludos.
>
> On Fri, 11 Aug 2023 18:15:18 +0200
> Manuel Mendoza <mmendoza using fulbrightmail.org> wrote:
>
> > Esta es la respuesta que te da ChatGPT-4:
> >
> > Entiendo tu pregunta y, aunque no hay una función nativa en R que te
> > permita hacer exactamente lo que estás pidiendo, puedes lograr el mismo
> > resultado utilizando una función. Una función te permitiría encapsular la
> > lógica de la expresión que quieres reutilizar y luego llamar a esa
> función
> > donde sea necesario.
> >
> > He aquí cómo podrías hacerlo:
> >
> > V1  <- c(47, 71, 41, 23, 83, 152, 82, 8, 160, 18)
> > V2a <- c(NA, 36, 15, 5, 56, 18, NA, 5, NA, 5)
> > V2b <- c(37, NA, 15, NA, NA, NA, 90, NA, 161, NA)
> >
> > # Definir una función que encapsula la lógica de la expresión
> > myFunc <- function(V2a, V2b) {
> >   ifelse(is.na(V2a) & !is.na(V2b), V2b, V2a)
> > }
> >
> > # Luego puedes usar esa función donde necesites la expresión
> > V3 <- ((myFunc(V2a, V2b) - V1)/V1)*100
> > V4 <- ifelse(!is.na(((myFunc(V2a, V2b)-V1)/V1)*100),
> ifelse(((myFunc(V2a,
> > V2b)-V1)/V1)*100 > 0, "1", "0"), NA)
> > ```
> >
> > Definir la lógica dentro de una función te brinda la flexibilidad de
> > reutilizar esa lógica en diferentes partes de tu código sin tener que
> > repetir la misma expresión una y otra vez. Esto hace que tu código sea
> más
> > fácil de leer y mantener.
> >
> >
> >
> > El jue, 10 ago 2023 a las 19:36, Griera (<griera using yandex.com>) escribió:
> >
> > > Hola a todos:
> > >
> > > Se me ha planteado un problema que no está ligado a ningún problema
> > > concreto. Es más teórico.
> > >
> > > Supongamos que tenemos tres variables:
> > >
> > > V1  <- c (47, 71,  41,  23,  83, 152,  82,   8, 160,  18)
> > > V2a <- c (NA, 36,  15,   5,  56,  18,  NA,   5,  NA,   5)
> > > V2b <- c (37, NA,  15,  NA,  NA,  NA,  90,  NA,  161, NA)
> > >
> > > Supongamos que tengo la expresión (que no puedo asignarlo a ninguna
> > > variable):
> > >
> > > (ifelse (is.na (V2a) & ! is.na (V2b), V2b,  V2a))
> > >
> > > Supongamos que tengo que utilizar esta expresión dos o más veces y no
> > > puedo utilizar ni un xapply () ni un bucle. Por ejemplo:
> > >
> > > V3 <- (((ifelse (is.na (V2a) & ! is.na (V2b), V2b,  V2a)) -
> V1)/V1)*100
> > > V4 <-   ifelse (! is.na ((((ifelse (is.na (V2a) & ! is.na (V2b),
> > > V2b,  V2a))-V1)/V1)*100), ifelse ((((ifelse (is.na (V2a) & ! is.na
> > > (V2b), V2b,  V2a))-V1)/V1)*100 > 0, "1", "0"), NA)
> > >
> > > Hay alguna forma de almacenar la expresión "(ifelse (is.na (V2a) & !
> > > is.na (V2b), V2b,  V2a))" en un objeto y utilizar el nombre del objeto
> > > en las ordenes (por ejemplo, con una hipotética función xfunc ()). Por
> > > ejemplo:
> > >
> > > ORD <- "(ifelse (is.na (V2a) & ! is.na (V2b), V2b,  V2a))"
> > > V3 <- ((xfunc (ORD) - V1)/V1)*100
> > > V4 <-   ifelse (! is.na (((xfunc (ORD)-V1)/V1)*100), ifelse
> > > (((xfunc (ORD)-V1)/V1)*100 > 0, "1", "0"), NA)
> > >
> > >
> > > El ejemnplo és absurdo, pero solo lo presento como un hipotético
> ejercicio.
> > >
> > > Muchas gracias por la ayuda.
> > >
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es using r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> > >
>

	[[alternative HTML version deleted]]



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