【问题标题】:r cbind a single column of a dataframe with another dataframe without changing the column namer cbind 一个数据框的单列与另一个数据框,而不更改列名
【发布时间】:2017-04-21 23:27:52
【问题描述】:

假设我有两个数据框:

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

如果我 cbind df1 和 df2,一切正常

> 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

如果我将 df2 与 df1 的第二列 cbind,列名会改变:

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

无论如何我可以保留列名吗?

【问题讨论】:

  • cbind(df2, df1[2]) 也会起作用

标签: r


【解决方案1】:

使用

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

当您只从 data.frame 中选择一列时,R 默认情况下会将其转换为向量并且向量没有“名称”。通过使用drop=FALSE,它表示一个跟踪列名的data.frame。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这是一个使用tidyverse的选项

      library(dplyr)
      df1 %>%
         select(y) %>%
         bind_cols(df2, .)
      

      【讨论】:

        猜你喜欢
        • 2020-05-23
        • 2019-07-05
        • 2021-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-18
        相关资源
        最近更新 更多