怎么样:
insert.under.row.number <- function (mat, rnum, what) {
if (length(what) != ncol(mat)) what <- c(what, rep_len(NA, ncol(mat) - length(what)))
rbind(mat[1:rnum, ], what, mat[(rnum + 1):nrow(mat), ])
}
如果您给出 c(0, 0.00),这将在第三列中放置一个 NA。
实际上,我只是要链接到@dickoa 链接到的可能重复项:Add new row to dataframe, at specific row-index, not appended? . 您唯一需要做的与该答案不同的是这部分:
if (length(what) != ncol(mat)) what <- c(what, rep_len(NA, ncol(mat) - length(what)))
因此,关于这个差异,我将留下我的答案。但是也应该检查一下这个答案。
这是您链接到的输入文件中的示例:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 1 4068961 731027.9 186.849 1.5000 sondage006 24.0 26.000 NA 2.000
2 1 4068963 731027.8 185.317 0.9500 sondage006 26.0 28.000 NA 2.000
3 1 4068964 731027.8 183.785 2.1000 sondage006 28.0 30.000 NA 2.000
4 1 4068965 731027.8 182.253 1.3000 sondage006 30.0 32.000 NA 2.000
5 1 4068967 731027.8 180.721 0.5000 sondage006 32.0 34.000 NA 2.000
6 1 4068916 731018.2 181.267 0.5732 sondage006A 25.8 27.667 NA 1.867
这样做之后:yy <- insert.under.row.number(xx, 3, c(0, 0.0))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 1 4068961 731027.9 186.849 1.50 sondage006 24 26 NA 2
2 1 4068963 731027.8 185.317 0.95 sondage006 26 28 NA 2
3 1 4068964 731027.8 183.785 2.10 sondage006 28 30 NA 2
4 0 0 NA NA NA <NA> NA NA NA NA
410 1 4068965 731027.8 182.253 1.30 sondage006 30 32 NA 2
5 1 4068967 731027.8 180.721 0.50 sondage006 32 34 NA 2
行名似乎搞砸了。