Ya sé a qué se debe:
En vuestro R, la función data.frame transforma automáticamente los vectores de tipo /character/ a tipo/factor/.
Con un factor, sapply devuelve el número del nivel correspondiente:

> col1 <- c('x1', 'x2', 'x11', 'x1','x33', 'x1','x4', 'x5', 'x35', 'x1','x2', 'x4')

> sapply(col1, function(x) ifelse(x%in%c("x1","x2","x3"), "prueba12",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))         x1         x2        x11         x1        x33 x1         x4         x5        x35         x1         x2 x4 "prueba12" "prueba12"      "x11" "prueba12"      "x33" "prueba12" "prueba2"  "prueba2"      "x35" "prueba12" "prueba12"  "prueba2"

> sapply(factor(col1), function(x) ifelse(x%in%c("x1","x2","x3"), "prueba12",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))  [1] "prueba12" "prueba12" "2"        "prueba12" "4" "prueba12" "prueba2"  "prueba2"  "5"        "prueba12" "prueba12" "prueba2"
>




El 10/09/2020 a las 20:35, David Mateos escribió:
Hola,
a mí me sucede como a Samura y no consigo entender de donde salen esos "2", "4" y "5" para df1. ¿Alguien puede arrojar luz?
Tanto con la versión 3.6 como con la 4.0.2

Si me funciona con
```
transforma <- function(df) {
  apply(df, 1, function(x)
    ifelse(x%in%c("x1","x2","x3"),
           "prueba12",
           ifelse(x%in%c("x4","x5","x6"),
                  "prueba2",x)
           )
    )
}
df1$transformacion <- transforma(df1)
```
Un saludo,
David

Enviado desde Outlook <http://aka.ms/weboutlook>

------------------------------------------------------------------------
*De:* R-help-es <r-help-es-boun...@r-project.org> en nombre de Marcelino de la Cruz Rot <marcelino.delac...@urjc.es>
*Enviado:* jueves, 10 de septiembre de 2020 19:15
*Para:* Samura . <tontit...@hotmail.com>; r-help-es@r-project.org <r-help-es@r-project.org>
*Asunto:* Re: [R-es] aplicar codigo
Yo copio y pego este código y me sale correctamente. Se me ocurre que
pueda deberse a la versión de R ¿cuál usas?


El 10/09/2020 a las 17:51, Samura . escribió:
> Gracias por las respuestas.
>
> Probé lo de hacer la función y no me salía. Pensaba que hacía algo mal.
> Ahora con el código de Marcelino tampoco me sale.
>
> col1 <- c('x1', 'x2', 'x11', 'x1','x33', 'x1','x4', 'x5', 'x35',
> 'x1','x2', 'x4')
> col2 <- c('x12', 'x4', 'x6', 'x771','x4', 'x2')
> col3 <- c('x7', 'x2', 'x4', 'x5','x111', 'x1','x4', 'x5',
> 'x35','x2','x2', 'x4','x6', 'x5')
>
> df1<-data.frame(col1)
> df2<-data.frame(col2)
> df3<-data.frame(col3)
>
> transforma <- function(df) sapply(df, function(x)
>     ifelse(x%in%c("x1","x2","x3"),
>  "prueba12",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))
>
> transforma(df1)
> col1
> [1,] "prueba12"
> [2,] "prueba12"
> [3,] "2"
> [4,] "prueba12"
> [5,] "4"
> [6,] "prueba12"
> [7,] "prueba2"
> [8,] "prueba2"
> [9,] "5"
> [10,] "prueba12"
> [11,] "prueba12"
> [12,] "prueba2"
>
> ¿Alguna idea de pq me sale 2, 4, 5?
> ------------------------------------------------------------------------
> *De:* R-help-es <r-help-es-boun...@r-project.org> en nombre de
> Marcelino de la Cruz Rot <marcelino.delac...@urjc.es>
> *Enviado:* jueves, 10 de septiembre de 2020 9:36
> *Para:* r-help-es@r-project.org <r-help-es@r-project.org>
> *Asunto:* Re: [R-es] aplicar codigo
> Hola:
> Como dice Carlos, algo así, por ejemplo:
>
> transforma <- function(df) sapply(df, function(x)
> ifelse(x%in%c("x1","x2","x3"),
> "prueba1",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))
>
>
>  > transforma(df1)
>        col1
>   [1,] "prueba1"
>   [2,] "prueba1"
>   [3,] "x11"
>   [4,] "prueba1"
>   [5,] "x33"
>   [6,] "prueba1"
>   [7,] "prueba2"
>   [8,] "prueba2"
>   [9,] "x35"
> [10,] "prueba1"
> [11,] "prueba1"
> [12,] "prueba2"
>
>
>  > transforma(df2)
>       col2
> [1,] "x12"
> [2,] "prueba2"
> [3,] "prueba2"
> [4,] "x771"
> [5,] "prueba2"
> [6,] "prueba1"
>
>
>  > transforma(df3)
>        col3
>   [1,] "x7"
>   [2,] "prueba1"
>   [3,] "prueba2"
>   [4,] "prueba2"
>   [5,] "x111"
>   [6,] "prueba1"
>   [7,] "prueba2"
>   [8,] "prueba2"
>   [9,] "x35"
> [10,] "prueba1"
> [11,] "prueba1"
> [12,] "prueba2"
> [13,] "prueba2"
> [14,] "prueba2"
>
> Saludos,
>
> Marcelino
>
> El 10/09/2020 a las 9:41, Carlos Ortega escribió:
> > Hola,
> > Si lo estoy entendiendo bien, lo que tienes que crearte es una función. > > A la función le pasarías unos parámetros (las columnas y el dataframe al
> > que añadir la transformación), y en el cuerpo de la función haces esos
> > cálculos.
> >
> > Gracias,
> > Carlos.
> >
> >
> >
> > Gracias,
> > Carlos.
> >
> > El jue., 10 sept. 2020 a las 3:55, Samura . (<tontit...@hotmail.com>)
> > escribió:
> >
> >> Hola,
> >> me gustaría hacer algo como en el siguiente ejemplo
> >>
> >> A un df añadirle una columna que es la transformación de otra,
> >> en plan a todo lo que sea  x1, x2, x3 lo llamo prueba 1
> >> todo lo que sea x4,x5,x6 lo llamo prueba 2
> >> el resto de x las dejo como están.
> >>
> >> Sería algo así
> >>
> >> col1 <- c('x1', 'x2', 'x11', 'x1','x33', 'x1','x4', 'x5', 'x35',
> >> 'x1','x2', 'x4')
> >> df1<-data.frame(col1)
> >> attach(df1)
> >>
> >> df1$transformacion<-ifelse(col1 == "x1"|col1 == "x2"| col1 == "x3",
> >> "prueba1",
> >>                             ifelse(col1 == "x4"|col1 == "x5"| col1
> == "x6",
> >> "prueba2", col1))
> >>
> >> detach(df1)
> >> df1
> >>
> >> pero ahora en vez de un df tengo varios
> >>
> >> col2 <- c('x12', 'x4', 'x6', 'x771','x4', 'x2')
> >> col3 <- c('x7', 'x2', 'x4', 'x5','x111', 'x1','x4', 'x5',
> 'x35','x2','x2',
> >> 'x4','x6', 'x5')
> >> df2<-data.frame(col2)
> >> df3<-data.frame(col3)
> >>
> >> ¿cómo puedo aplicar el código al resto de los df sin tener que
> repetirlo?
> >>
> >>
> >>
> >>          [[alternative HTML version deleted]]
> >>
> >> _______________________________________________
> >> R-help-es mailing list
> >> R-help-es@r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-help-es <https://stat.ethz.ch/mailman/listinfo/r-help-es> > <https://stat.ethz.ch/mailman/listinfo/r-help-es <https://stat.ethz.ch/mailman/listinfo/r-help-es>>
> >>
> >
>
> --
> 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
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es <https://stat.ethz.ch/mailman/listinfo/r-help-es> > <https://stat.ethz.ch/mailman/listinfo/r-help-es <https://stat.ethz.ch/mailman/listinfo/r-help-es>>


--
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
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es <https://stat.ethz.ch/mailman/listinfo/r-help-es>


--
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
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a