2017-04-21 125 views
0

假设我有两个数据帧:[R cbind与另一数据框一个数据帧的一列没有更改列名

df1 = data.frame(x=1:4,y=2:5) 
df2 = data.frame(x2=1:4,y2=2:5) 

如果我cbind DF1和DF2,一切都OK

> cbind(df2,df1) 
x2 y2 x y 
1 1 2 1 2 
2 2 3 2 3 
3 3 4 3 4 
4 4 5 4 5 

如果我cbind与DF1的第2列DF2,列名称将发生变化:

> cbind(df2,df1[,2]) 
x2 y2 df1[, 2] 
1 1 2  2 
2 2 3  3 
3 3 4  4 
4 4 5  5 

反正是有,我可以公关保留列名称?

+2

'cbind一个选项(DF2,DF1 [2])'本来还努力 – rawr

回答

3

使用

cbind(df2, df1[,2, drop=FALSE]) 

当你只能选择从data.frame一列,R在默认情况下会变成一个载体,载体不具有“名字”。通过使用drop=FALSE,它表示一个跟踪列名的data.frame。

+0

非常感谢您的帮助和解释! – user3446619

1

您可以简单地使用cbind(df2,y=df1[,2])

+0

非常感谢您的帮助! – user3446619

+0

不客气。 –

0

下面是使用tidyverse

library(dplyr) 
df1 %>% 
    select(y) %>% 
    bind_cols(df2, .) 
相关问题