如何从列表向R dataframe添加多个列

如何从列表向R dataframe添加多个列,r,dataframe,R,Dataframe,我有一个数据帧: df1 a b c 1 1 0 1 1 1 1 1 1 df2 a b c d e f 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 如何从df2向df1添加不在df1中的新列?要获得: df2 a b c d e f 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 我试过: columns_toadd <- colnames(df1)[!(colnames(df1) %in% coln

我有一个数据帧:

df1

a b c
1 1 0
1 1 1
1 1 1

df2

a b c d e f
1 1 0 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
2 2 2 2 2 2
如何从
df2
df1
添加不在
df1
中的新列?要获得:

df2

a b c d e f
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 0 0 0
我试过:

columns_toadd <- colnames(df1)[!(colnames(df1) %in% colnames(df2))]

for (i in 1:length(columns_toadd)){
  df$columns_toadd[[i]] <- 0
}

我希望在BaseR中这样做,因为我在一个软件包有限的环境中工作

我们可以使用
setdiff
获取不在“df1”中的列名,并将其分配给0

df1[setdiff(names(df2), names(df1))] <- 0

df1[setdiff(names(df2),names(df1))]尝试
df1[setdiff(names(df2),names(df1))]新列的定义是什么?是列名还是内容?另外,行数也不同。@akrun我只想将
df2
中的列名而不是
df1
中的列名添加到
df1
中,每行中都有一个0。我并没有关注atm的长度。@Chuck akrun的代码会准确地告诉你that@akrun. 工作得很好。谢谢。如果答案是肯定的,我很乐意接受。
df1[setdiff(names(df2), names(df1))] <- 0