#r #dplyr
#r #dplyr
Вопрос:
library(dplyr)
library(purrr)
tbl1 <- tibble(data.frame(
a = c(1,2),
b = c(3,4)
))
tbl2 <- c('a','b','c','d') %>% purrr::map_dfc(
setNames, object = list(numeric()))
Я хочу добавить все строки tbl1
to tbl2
со столбцами, которые находятся в tbl2
, а не tbl1
в качестве NA
. Таким образом, tbl будет выглядеть следующим образом:
a b c d
1 3 NA NA
2 4 NA NA
Как мне это сделать без необходимости вручную перечислять столбцы c
и d
?
Комментарии:
1. Возможно
bind_rows(tbl1,tbl2) %>% mutate(across(everything(),~as.character(.)))
tidyverse
, сначала загрузка!
Ответ №1:
dplyr::bind_rows
полезно для этого.
> bind_rows(tbl1, tbl2)
# A tibble: 2 x 4
a b c d
<dbl> <dbl> <dbl> <dbl>
1 1 3 NA NA
2 2 4 NA NA
- Вы можете определить
tbl_df
объект непосредственно сtibble()
помощью . Вам не нужно этого делатьtibble(data.frame(<values>))
. Atbl_df
— это, по сути, просто data.frame с необычным методом печати и некоторой (внешней) поддержкой группировки. - Аналогично, вы можете определить пустой tbl напрямую:
tibble(a = numeric(), b = numeric(), c = numeric(), d = numeric())
Комментарии:
1. вы имеете в виду
bind_rows
?
Ответ №2:
Другой вариант rbindlist
library(data.table)
rbindlist(list(tbl1, tbl2))