在R中串联2个数据帧

Cra*_*aig 1 r concatenation

假设我有两个具有相同维度和列名称的数据框:

library(tidyverse)

x <- tribble(
  ~x, ~y, ~z,
  1,2,3,
  2,3,4,
  3,4,5
)

y <- tribble(
  ~x, ~y, ~z,
  "a","b","c",
  "b","c","d",
  "c","d","e"
)
Run Code Online (Sandbox Code Playgroud)

我如何结合它们来创建这个:

   # A tibble: 3 x 3
  x     y     z    
  <chr> <chr> <chr>
1 1a    2b    3c   
2 2b    3c    4d   
3 3c    4d    5e 
Run Code Online (Sandbox Code Playgroud)

我最初的想法是做这样的事情,但是没有用:

paste0(x, y)
Run Code Online (Sandbox Code Playgroud)

G. *_*eck 5

使用来自purrr的map2:

library(purrr)

map2_dfr(x, y, paste0)
Run Code Online (Sandbox Code Playgroud)

给予:

# A tibble: 3 x 3
  x     y     z    
  <chr> <chr> <chr>
1 1a    2b    3c   
2 2b    3c    4d   
3 3c    4d    5e   
Run Code Online (Sandbox Code Playgroud)

无需任何程序包就可以以几乎相同的方式完成此操作:

as.data.frame(mapply(paste0, x, y), stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)

在R devel中,可以这样写:

list2DF(mapply(paste0, x, y))
Run Code Online (Sandbox Code Playgroud)