如何将多个NA作为行添加到数据框?

时间:2020-11-10 13:04:47

标签: r dataframe na

让我们看下面的数据帧:

> df<-data.frame(1:3,4:6,7:9)
> df
  X1.3 X4.6 X7.9
1    1    4    7
2    2    5    8
3    3    6    9

我想在包含NA的数据帧的开头添加四行。因此,使用rbind()很容易做到。只是

df<-rbind(NA,df) 

但是有什么办法可以使我一次完成四次吗?或者我必须使用上述命令四次才能获得以下结果:

> df
  X1.3 X4.6 X7.9
1   NA   NA   NA
2   NA   NA   NA
3   NA   NA   NA
4   NA   NA   NA
5    1    4    7
6    2    5    8
7    3    6    9

5 个答案:

答案 0 :(得分:4)

您可以在行子设置中使用rep

rbind(df[rep(NA, 4),], df)
#     X1.3 X4.6 X7.9
#NA     NA   NA   NA
#NA.1   NA   NA   NA
#NA.2   NA   NA   NA
#NA.3   NA   NA   NA
#1       1    4    7
#2       2    5    8
#3       3    6    9

答案 1 :(得分:4)

类似于GKi的解决方案,但没有git init git remote add origin https://github.com/Vitosh/VBA_personal.git git fetch --all git checkout develop

rbind()

答案 2 :(得分:3)

如果您不介意在底部放置 NA 行:

df[ nrow(df) + 1:4, ] <- NA
#   X1.3 X4.6 X7.9
# 1    1    4    7
# 2    2    5    8
# 3    3    6    9
# 4   NA   NA   NA
# 5   NA   NA   NA
# 6   NA   NA   NA
# 7   NA   NA   NA

或者,要固定NA的顺序,不存在的子集行并重新排序(但我不喜欢这些行名):

df <- df[ c(nrow(df) + 1:4, seq(nrow(df))), ]
df
#      X1.3 X4.6 X7.9
# NA     NA   NA   NA
# NA.1   NA   NA   NA
# NA.2   NA   NA   NA
# NA.3   NA   NA   NA
# 1       1    4    7
# 2       2    5    8
# 3       3    6    9

答案 3 :(得分:2)

也许有一个功能,但是您可以使用单线循环:

for(i in 1:4){df <- rbind(NA,df)}

答案 4 :(得分:2)

John

如果要重置行名:

> rbind(matrix(rep(NA, 9), ncol = 3, dimnames = list(1:3, names(df))), df)
   X1.3 X4.6 X7.9
1    NA   NA   NA
2    NA   NA   NA
3    NA   NA   NA
11    1    4    7
21    2    5    8
31    3    6    9