setnames関数の使い方

setnamesでわからないこと

列名をつけるdata.table::setnamesですが, 挙動が直感と合わないことがありました.

library(data.table)
library(dplyr)

説明用に, 簡単なデータフレームを用意します.

data(mtcars)
cars_data = mtcars %>% 
  mutate(name = rownames(mtcars)) %>% 
  select(name, mpg)
cars_data %>% head(3)
##            name  mpg
## 1     Mazda RX4 21.0
## 2 Mazda RX4 Wag 21.0
## 3    Datsun 710 22.8

問題?

setnamesで列名を指定するときに, 直感と合わないことが起こっているように思えます.

## 1つめ
cars_data_1 = cars_data
cars_data_1 %>% setnames(c("name_1", "mpg_1"))
cars_data_1 %>% head(3)
##          name_1 mpg_1
## 1     Mazda RX4  21.0
## 2 Mazda RX4 Wag  21.0
## 3    Datsun 710  22.8
## 2つめ
cars_data_2 = cars_data
cars_data_2 %>% setnames(c("name_2", "mpg_2"))
cars_data_2 %>% head(3)
##          name_2 mpg_2
## 1     Mazda RX4  21.0
## 2 Mazda RX4 Wag  21.0
## 3    Datsun 710  22.8
##  ここで, さっき作ったcars_data1を確認してみると, 
cars_data_1 %>% head(3)
##          name_2 mpg_2
## 1     Mazda RX4  21.0
## 2 Mazda RX4 Wag  21.0
## 3    Datsun 710  22.8

cars_data_1をsetnamesした後に, cars_data_2をsetnamesすると,

cars_data1も列名が変わっている...?

なんでcars_data1の列名まで変更されるんですかね??

以上です.