Добавить строку в таблицу, состоящую из строк и чисел

#r #tidyverse

#r #tidyverse

Вопрос:

У меня есть tibble с 82 столбцами, из которых первый представляет собой символьную строку, а остальные — числа. Вот небольшой пример, содержащий всего 3 столбца:

 df <- df=tibble(agg = c("a","b","c","d","e","f","g","h","i","j"),
x1=c(1,0,0,NA,0,1,1,NA,0,1),
x2=c(1,1,NA,1,1,0,NA,NA,0,1))
  

Я хочу добавить дополнительную строку, где у меня есть вектор с числовыми значениями и строка

 "k", c(1:2)
  

Если есть только 3 столбца, я могу просто использовать add_row (agg = «k», x1 = 1, x2 = 2), но с 83 столбцами это невозможно. Будем признательны за любую помощь.

Приветствую Renger’а

Комментарии:

1. Важны ли значения числовых столбцов? Если нет, вы могли бы сделать rbind(c("k", rep(1, ncol(df) - 1)), df)

Ответ №1:

Создайте вектор и rbind перенесите его в исходный фрейм данных.

 df1 <- rbind(c("k", 1:2), df)
df1 <- type.convert(df1, as.is = TRUE)
df1

# A tibble: 11 x 3
#   agg      x1    x2
#   <chr> <int> <int>
# 1 k         1     2
# 2 a         1     1
# 3 b         0     1
# 4 c         0    NA
# 5 d        NA     1
# 6 e         0     1
# 7 f         1     0
# 8 g         1    NA
# 9 h        NA    NA
#10 i         0     0
#11 j         1     1
  

Ответ №2:

Мы можем использовать list и list можем иметь элементы с несколькими типами, rbind (или bind_rows из dplyr ) list

 rbind(df, list("k", 1, 2))
# A tibble: 11 x 3
#   agg      x1    x2
# * <chr> <dbl> <dbl>
# 1 a         1     1
# 2 b         0     1
# 3 c         0    NA
# 4 d        NA     1
# 5 e         0     1
# 6 f         1     0
# 7 g         1    NA
# 8 h        NA    NA
# 9 i         0     0
#10 j         1     1
#11 k         1     2
  

Или с помощью bind_rows

 library(dplyr)
bind_rows(df, list(agg = "k", x1 = 1, x2 = 2))
  

ПРИМЕЧАНИЕ: Здесь нам не нужно менять типы позже