将多个 NA 行添加到数据框

Adding multiple NA rows to a data frame

我想用循环来计算一些东西。循环应该超过我的观察次数。出于这个原因,我想首先将 NA 行添加到我的数据框中。假设我的数据框是 mtcars 数据。如何在 mtcars 数据中添加 10 行 NA?来自 dplyradd_row() 函数帮助我只添加一个 NA 行。使用 rbind() 也无助于添加多个 rows.I 可能也需要循环这个。但也许有一个简单的解决方案。

要将几行 NA 添加到数据框,您可以试试这个:

n <- 2 # Number of NA rows
rbind(df, matrix(NA, nrow = n, ncol = NCOL(df), 
                 dimnames = list(NULL, colnames(df))))

有很多方法可以做到这一点。一种使用 base-R 的方法:

#make a data.frame with 10 rows of NA
na_frame <- as.data.frame(matrix(NA, nrow = 10, ncol = 11))
#add the names of mtcars
names(na_frame) <- names(mtcars)
#bind together
rbind(mtcars, na_frame)

输出:

#truncated
Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
1                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
2                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
3                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
4                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
5                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
6                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
7                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
8                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
9                     NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA
10                    NA  NA    NA  NA   NA    NA    NA NA NA   NA   NA

以基本框架本身开始的备选方案:

基础 R

mt <- mtcars[1:3,]
rbind(mt, mt[0,][rep(NA, 11),])
#        mpg cyl disp  hp drat    wt  qsec vs am gear carb
# 1     21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# 2     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# 3     22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# NA      NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.1    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.2    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.3    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.4    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.5    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.6    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.7    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.8    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.9    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# NA.10   NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA

dplyr

library(dplyr)
mt %>%
  slice(rep(1, 11)) %>%
  mutate(across(everything(), ~ NA)) %>%
  bind_rows(mt, .)
#     mpg cyl disp  hp drat    wt  qsec vs am gear carb
# 1  21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# 2  21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# 3  22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# 4    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 5    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 6    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 7    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 8    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 9    NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 10   NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 11   NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 12   NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 13   NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA
# 14   NA  NA   NA  NA   NA    NA    NA NA NA   NA   NA