如果前几列的名称不在范围内,如何更改它们的名称并保留其余列的名称?

How do I change the names of the first few columns and leave the remaining as they were if they are not included in range?

例如,我有一个如下所示的数据框

ID| first name| last name| DOB
 1       John      Smith   1/4/1999
 2       Fred   Johnson    1/2/1987

我有一个向量是

c("Identification","First","Last")

然后我做

names(df2)<-Vector[1:3]

这几乎给了我想要的但不准确。

 Identification|First|Last|
 1              John  Smith      1/4/1999
 2               Fred Johnson    1/2/1987

我希望 DOB 不会丢失

     Identification|First|Last|DOB
 1              John  Smith      1/4/1999
 2               Fred Johnson    1/2/1987

有没有办法动态地做到这一点。没有你决定在最后添加 DOB 的地方。我想要一个脚本,它只会根据选择更改前三列,并保留其余列的名称,而不是将它们变成空白。

colnames(df2) = c(Vector,colnames(df2)[4])

其中 4 是您要保留名称的列的索引。

您可以使用

names(df2)[1:3] <- Vector

如果您想将 x 的第一个元素更改为 5,您可以使用 x[1] <- 5。如果您想将 x 的前几个元素更改为 57,您可以使用 x[1:2] <- c(5, 7)。分配给 names(df) 的工作方式相同。

如果你有超过4个名字,你可以动态重命名它们:

vector <- c("Identification","First","Last")

names(df) <- c(vector, names(df)[(length(vector)+1):ncol(df)])

数据

df <- data.frame(ID = c(1,2),
                 "first name" = c("John", "Fred"),
                 "last name" = c("Smith", "Johnson"),
                 DOB = c("1/4/1999", "1/2/1987"))