es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Formas de seleccionar múltiples columnas en base R utilizando el operador nativo de tuberías |>: 1. Utilizando la función select() del paquete dplyr: “` library(dplyr) data_frame %>% select(columna1, columna2, columna3) “` 2. Utilizando la función subset(): “` subset(data_frame, select = c(columna1, columna2, columna3)) “` 3. Utilizando la función select_cols(): “` select_cols(data_frame, columna1, columna2, columna3) “` 4. Utilizando la función with(): “` with(data_frame, c(columna1, columna2, columna3)) “` Estas son algunas de las formas en las que puedes seleccionar múltiples columnas en R utilizando el operador de tuberías nativo |>.

¿Cuáles son las buenas formas de seleccionar varias columnas de un marco de datos en R base utilizando el operador nativo |->? (es decir, sin tidyverse/dplyr para reducir las dependencias externas).

Si tenemos el marco de datos

dtf <- data.frame(a = 1:3, b = 4:6, c = 7:9)

entonces podemos seleccionar las columnas b y c con

> dtf[c("b", "c")]
  b c
1 4 7
2 5 8
3 6 9

Una forma elegante de hacer esto en tidyverse con el operador nativo es

> dtf |> dplyr::select(b, c)
  b c
1 4 7
2 5 8
3 6 9

Mi mejor intento en R base con el operador nativo fue

> dtf |> subset(select = c("b", "c"))
  b c
1 4 7
2 5 8
3 6 9

Un intento más conciso (pero fallido) fue

> dtf |> `[`(c("b", "c"))
Error: función '[' no es compatible en la llamada RHS de una tubería

¿Existen mejores formas de hacer esto que me esté perdiendo?

Nota: Si solo quisieras una sola columna y estuvieras bien con convertirla en un vector, entonces se podría usar getElement:

> dtf |> getElement("b")
[1] 4 5 6
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay una forma elegante de seleccionar varias columnas de un marco de datos en R base utilizando el operador nativo de tuberías |> sin introducir dependencias adicionales. La función subset es una opción decente, pero requiere el uso del argumento select, lo cual puede ser engorroso en algunos casos. Otra forma es utilizar el método de indexación mostrado anteriormente. Sin embargo, este enfoque solo funciona si quieres seleccionar columnas no consecutivas y puede volverse complicado rápidamente con marcos de datos más grandes. En general, la función dplyr::select es la forma más concisa y expresiva de seleccionar columnas de un marco de datos utilizando el operador nativo de tuberías |> en R.

Comments are closed.