从具有 R 中行名称的向量向数据帧添加空行

Add empty row to dataframe from vector with row names in R

我有这样一个数据框:

DF =
    C1    C2    C3
R1  9     2     7
R2  4     1     NA
R4  3     5     1 

我有一个这样的向量:

V = 
[1] "R3", "R5"

我该怎么做才能将向量添加到数据框中,以便向量中的项目成为具有 NA 值的新行的行名称?

我要获取的数据框是这样的:

DF = 
    C1    C2    C3
R1  9     2     7
R2  4     1     NA
R3  NA    NA    NA 
R4  3     5     1
R5  NA    NA    NA  

非常感谢!

实现您想要的结果的一个选项可能如下所示。我首先附加一些空行,将向量附加到行名,最后按行名对数据框进行排序:

df <- data.frame(
  C1 = c(9, 4, 3),
  C2 = c(2, 1, 5),
  C3 = c(7, NA, 1),
  row.names = paste0("R", c(1, 2, 4))
)

v <- c("R3", "R5")

rn <- row.names(df)
df[nrow(df) + seq_along(v), ] <- NA 
row.names(df) <- c(rn, v)
df <- df[order(row.names(df)),]
df
#>    C1 C2 C3
#> R1  9  2  7
#> R2  4  1 NA
#> R3 NA NA NA
#> R4  3  5  1
#> R5 NA NA NA

tidyverse中,我们可以用complete扩展行名转换后的列,这样对于[=16=中的那些元素,其余的列都是NA ]

library(dplyr)
library(tidyr)
library(tibble)
df1 %>% 
   rownames_to_column('rn') %>%
   complete(rn = union(rn, V)) %>% 
   column_to_rownames("rn")

-输出

   C1 C2 C3
R1  9  2  7
R2  4  1 NA
R3 NA NA NA
R4  3  5  1
R5 NA NA NA  

数据

df1 <- structure(list(C1 = c(9, 4, 3), C2 = c(2, 1, 5), C3 = c(7, NA, 
1)), class = "data.frame", row.names = c("R1", "R2", "R4"))
V <- c("R3", "R5")