R:查找缺少的列,如果缺少则添加到数据框

use*_*761 7 r

我想编写一些代码可以获取给定的数据框,检查是否缺少任何列,如果是,则添加填充0或NA的缺失列.这是我得到的:

> df
   x1 x2 x4
1   0  1  3
2   3  1  3
3   1  2  1

> nameslist <- c("x1","x2","x3","x4")
> miss.names <- !nameslist %in% colnames(df)
> holder <- rbind(nameslist,miss.names)
> miss.cols <- subset(holder[1,], holder[2,] == "TRUE")
Run Code Online (Sandbox Code Playgroud)

除此之外,我无法弄清楚如何在没有硬编码的情况下添加丢失的列("x3").理想情况下,我希望新的完整数据框也具有与nameslist相同的列.

有任何想法吗?我当前的代码可以忽略,没问题.

Jos*_*ien 18

这是一个直截了当的方法

df <- data.frame(a=1:4, e=4:1)
nms <- c("a", "b", "d", "e")   # Vector of columns you want in this data.frame

Missing <- setdiff(nms, names(df))  # Find names of missing columns
df[Missing] <- 0                    # Add them, filled with '0's
df <- df[nms]                       # Put columns in desired order
#   a b d e
# 1 1 0 0 4
# 2 2 0 0 3
# 3 3 0 0 2
# 4 4 0 0 1
Run Code Online (Sandbox Code Playgroud)