R 如何添加几个NA';s作为数据帧的行?
让我们以下面的数据帧为例:R 如何添加几个NA';s作为数据帧的行?,r,dataframe,na,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 但是有没有办法让我一次做四次呢?或者我必须使用上述命令四次才能得到以下结果: > df X1.3 X4.6 X7.9 1 NA NA NA 2 NA NA NA 3 NA NA NA 4 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
但是有没有办法让我一次做四次呢?或者我必须使用上述命令四次才能得到以下结果:
> 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
也许有这样一个函数,但您可以使用一个线性循环:
for(i in 1:4){df <- rbind(NA,df)}
(1:4中的i){df
如果要重置行名称:
df <- rbind(matrix(rep(NA, 9), ncol = 3, dimnames = list(1:3, names(df))), df)
row.names(df) <- NULL
df
X1.3 X4.6 X7.9
1 NA NA NA
2 NA NA NA
3 NA NA NA
4 1 4 7
5 2 5 8
6 3 6 9
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
df您可以在行子集设置中使用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
如果您不介意底部有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
df[nrow(df)+1:4,]类似于GKi的解决方案,但没有rbind()
整洁但低效。
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
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
df[c(rep(NA, 4L), seq_len(nrow(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