从另一个数据框创建新数据框时防止变量重命名

时间:2019-02-12 09:46:00

标签: r tidyverse

我有一个非常简单的数据集,

a <- c(29, 10, 29)
b <- c(32, 23, 43)
c <- c(33,22,1)
df1 <- data.frame(a, b, c)

我想从a的向量cdf1创建一个新的数据帧。我正在运行以下命令

df2 <- data.frame(df1$a, df1$c)

它正在创建具有变量名df.adf.c的数据框。有什么办法可以使变量名与df1中的完全一样?

3 个答案:

答案 0 :(得分:0)

我认为您的a,b,c变量不再直接可用

colnames(df2) <- c("a", "c")

应该做到这一点吗?

答案 1 :(得分:0)

df1[,c("a","c")]

如果仅选择列:df1[,"a",drop=FALSE]

总是包含drop=FALSE来处理一般情况:

selectedColumns <- c("a","c")
df1[, selectedColumns, drop=FALSE]

答案 2 :(得分:0)

如果您的实际应用程序比仅仅获取一个子集还要复杂(这似乎是一个很好的解决方案),则可以使用setNames(在这里没有多大意义,但是如果您尝试尝试的话可能会有所帮助)在构造时自动重命名数据框...):

df2 <- setNames(df1[, c('a', 'b')], names(df1[, c('a', 'b')]) )