Search code examples
rmagrittr

Transform data to data.frame with the pipe operator


Lets say i have the following data: x <- 1:2.

My desired output is a data.frame() like the following:

a b
1 2

With base R i would do something along:

df <- data.frame(t(x))
colnames(df) <- c("a", "b")

Question: How would i do this with the pipe operator?

What i tried so far:

library(magrittr)
x %>% data.frame(a = .[1], b = .[2])

Solution

  • After the transpose, convert to tibble with as_tibble and change the column names with set_names

    library(dplyr)
    library(tibble)
    x %>% 
      t %>%
      as_tibble(.name_repair = "unique") %>%
      setNames(c("a", "b"))
    # A tibble: 1 x 2
    #      a     b
    #  <int> <int>
    #1     1     2
    

    Or another option if we want to use the OP's syntax would be to wrap the code with {}

    x %>%
         {data.frame(a = .[1], b = .[2])}