首页 > 解决方案 > 如何在 R 中添加具有一个值和所有其他 NA 值的新行

问题描述

我有一个样本 ID 向量,它们需要在我的数据框中(否则我应用到它们的函数不起作用)但缺少(称为missing)。

对于 中的每个元素missing,我想在数据框的末尾添加一行,其中包含 ID,但该行中的其余数据(对于所有其他列)都是 NA。

我目前正在尝试的,基于我看到的其他一些 Stack Overflow 帖子,这些帖子只谈论添加空行,如下所示:

for (element in missing) {
    df[nrow(df)+1,] <- NA
    df[nrow(df),1] <- element
}

有没有更简单、更快捷的方法来做到这一点,因为即使 1000 个缺失的元素也需要一些时间,而我以后可能需要处理更多。

标签: rdataframena

解决方案


1)使用内置anscombe数据框,插入两行,将 -1 和 -3 放入 x1 列。

library(tibble)
new <- c(-1, -3)
add_row(anscombe, x1 = new)

给予:

   x1 x2 x3 x4    y1   y2    y3    y4
1  10 10 10  8  8.04 9.14  7.46  6.58
2   8  8  8  8  6.95 8.14  6.77  5.76
3  13 13 13  8  7.58 8.74 12.74  7.71
4   9  9  9  8  8.81 8.77  7.11  8.84
5  11 11 11  8  8.33 9.26  7.81  8.47
6  14 14 14  8  9.96 8.10  8.84  7.04
7   6  6  6  8  7.24 6.13  6.08  5.25
8   4  4  4 19  4.26 3.10  5.39 12.50
9  12 12 12  8 10.84 9.13  8.15  5.56
10  7  7  7  8  4.82 7.26  6.42  7.91
11  5  5  5  8  5.68 4.74  5.73  6.89
12 -1 NA NA NA    NA   NA    NA    NA
13 -3 NA NA NA    NA   NA    NA    NA

2)这是一个基本解决方案。new来自 (1)

(如果覆盖anscombe是可以的,但通常这会使调试变得更加困难,然后省略第一行并替换anscombe2anscombe.)

anscombe2 <- anscombe
anscombe2[nrow(anscombe2) + seq_along(new), "x1"] <- new

3)使用 tibble 包(或导入它的 dplyr)我们可以使用 rows_insert。 new来自(1)。

library(dplyr)
rows_insert(anscombe, tibble(x1 = new))

推荐阅读