R 在矢量中添加列,但不在df中添加列
我正在尝试执行以下操作,并想知道是否有更简单的方法使用dplyr来实现这一点(我相信有): 我想将数据帧的列与名称向量进行比较,如果df不包含与名称向量中的一个名称对应的列,则将该列添加到df并用NAs填充其值 例如,在以下MWE中: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中
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