r语言 - 向一列添加一个向量,而不指定其他列



我想添加一个向量到一列,而不指定其他列。我有如下示例数据:

library(data.table)
dat <- fread("A B C D
one 2 three four
two 3 NA    one")
vector_to_add <- c("five", "six")

期望输出:

out <- fread("A B C D
one 2 three four
two 3 NA    one
NA  NA five  NA
NA  NA six   NA")

我看到了一些使用向量来行绑定的方法的答案:

row3 < c(NA, NA, "five", NA)

然而,我想找到一个解决方案,其中我不指定整行。

编辑张贴后不久,我意识到,这可能是最容易采取现有的行,使行NA,并替换列中的值,其中向量将被添加,对于向量中的每个条目。然而,我认为这仍然是一个相当麻烦的解决方案。

如果您为向量命名,那么您可以将该列rbind并将其余单元格填充为NAs。

df_to_add <- data.frame(C=c("five", "six"))
rbind(dat, df_to_add, fill=TRUE)
A  B     C    D
1:  one  2 three four
2:  two  3  <NA>  one
3: <NA> NA  five <NA>
4: <NA> NA   six <NA>

您可以从数据中使用rbindlist()函数。表包将向量添加到数据表中的一列,而无需指定其他列。rbindlist()函数允许您创建向量或数据表的列表,并将它们组合成单个数据表。

在您的示例中,您可以创建一个包含要添加到数据表中的值的新向量,并使用rbindlist()函数将该向量追加到数据表中。例如,下面的代码展示了如何将向量vector_to_add添加到数据表dat:

library(data.table)
dat <- fread("A B C D
one 2 three four
two 3 NA    one")
vector_to_add <- c("five", "six")
# Create a new vector with the values to add to the data table
new_vector <- c(NA, NA, vector_to_add[1], NA)
# Use rbindlist() to append the new vector to the data table
out <- rbindlist(list(dat, new_vector))
# Add the second value from the vector to the data table
out <- rbindlist(list(out, c(NA, NA, vector_to_add[2], NA)))

运行此代码后,数据表out应该包含所需的输出:

A  B     C     D
1: one 2 three four
2: two 3    NA   one
3: NA NA  five    NA
4: NA NA   six    NA

您可以使用rbindlist()函数以类似的方式将多个向量添加到数据表中。

相关内容

  • 没有找到相关文章

最新更新