如何使用单个表达式复制data.frame和更改列名?

kjo*_*kjo 1 r

有没有办法用一个表达式来实现以下目的?:

copy_of_df <- df
names(copy_of_df) <- c("some", "new", "column", "names", ...)
Run Code Online (Sandbox Code Playgroud)

例如,从df下面定义开始

> set.seed(0)
> h <- 5
> (df <- data.frame(x = 1, y = 1:h, z = sample(LETTERS[1:3], h, replace = T)))
  x y z
1 1 1 C
2 1 2 A
3 1 3 B
4 1 4 B
5 1 5 C
Run Code Online (Sandbox Code Playgroud)

...我可以复制df并重命名副本的列,如下所示:

> copy_of_df <- df
> names(copy_of_df) <- c("P", "Q", "R")
> copy_of_df
  P Q R
1 1 1 C
2 1 2 A
3 1 3 B
4 1 4 B
5 1 5 C
Run Code Online (Sandbox Code Playgroud)

可以使用单个表达式实现相同的复制+重命名操作吗?

akr*_*run 5

我们可以用 setNames

copy_of_df <- setNames(df,  c("P", "Q", "R"))
Run Code Online (Sandbox Code Playgroud)