如何将一行 0 添加到数据框

How add a row of 0 to a dataframe

我在 R 中有这个数据框

mat <-structure(list(a = c(2, 5, 90, 77, 56), b = c(45, 78, 98, 55, 
63), c = c(77, 85, 3, 22, 4), d = c(52, 68, 4, 25, 79), e = c(14, 
73, 91, 87, 94)), class = "data.frame", row.names = c(NA, -5L
))

我想添加一行“0”作为垫子的第一行。我需要的输出是

   a  b  c  d  e
1  0  0  0  0  0
2  2 45 77 52 14
3  5 78 85 68 73
4 90 98  3  4 91
5 77 55 22 25 87
6 56 63  4 79 94

我该怎么办?感谢

我们可以使用rbind

mat <- rbind(0, mat)

-输出

mat
   a  b  c  d  e
1  0  0  0  0  0
2  2 45 77 52 14
3  5 78 85 68 73
4 90 98  3  4 91
5 77 55 22 25 87
6 56 63  4 79 94

这是另一个使用 tidyverse 的选项,我们遍历每一列以将 0 添加到第一个位置,然后作为数据框重新绑定在一起。

library(tidyverse)

map_df(mat, ~ c(0, .x))

输出

      a     b     c     d     e
  <dbl> <dbl> <dbl> <dbl> <dbl>
1     0     0     0     0     0
2     2    45    77    52    14
3     5    78    85    68    73
4    90    98     3     4    91
5    77    55    22    25    87
6    56    63     4    79    94

或者另一种选择是只保留数据帧的第一行,然后将所有值更改为 0,然后使用 bind_rows 添加到 mat

bind_rows(mutate(mat[1, ], across(everything(), ~ 0)), mat)