我想添加一个向量到一列,而不指定其他列。我有如下示例数据:
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()函数以类似的方式将多个向量添加到数据表中。