Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在矢量中添加列,但不在df中添加列_R_Dplyr - Fatal编程技术网

R 在矢量中添加列,但不在df中添加列

R 在矢量中添加列,但不在df中添加列,r,dplyr,R,Dplyr,我正在尝试执行以下操作,并想知道是否有更简单的方法使用dplyr来实现这一点(我相信有): 我想将数据帧的列与名称向量进行比较,如果df不包含与名称向量中的一个名称对应的列,则将该列添加到df并用NAs填充其值 例如,在以下MWE中: df <- data.frame(cbind(c(1:6),c(11:16),c(10:15))) colnames(df) <- c("A","B","C") names <- c("A","B","C","D","E") df在dplyr中

我正在尝试执行以下操作,并想知道是否有更简单的方法使用dplyr来实现这一点(我相信有):

我想将数据帧的列与名称向量进行比较,如果df不包含与名称向量中的一个名称对应的列,则将该列添加到df并用NAs填充其值

例如,在以下MWE中:

df <- data.frame(cbind(c(1:6),c(11:16),c(10:15)))
colnames(df) <- c("A","B","C")
names <- c("A","B","C","D","E")

df在
dplyr
中不需要,它只是base R中的一个基本操作。(顺便说一句,以后尽量避免重写
names
之类的内置函数。之所以
names
仍然有效,是因为R在全局环境中查看基本包名称空间文件,但这仍然是一种不好的做法。)

df[setdiff(名称,名称(df))]
df[setdiff(names, names(df))] <- NA
df
#   A  B  C  D  E
# 1 1 11 10 NA NA
# 2 2 12 11 NA NA
# 3 3 13 12 NA NA
# 4 4 14 13 NA NA
# 5 5 15 14 NA NA
# 6 6 16 15 NA NA