당신은 또한 기본적으로 names<-
같은 일이 setNames
를 사용할 수있는 names<-
할당 기능
names(dat)[2] <- "value"
를 사용할 수 있지만, 변경된 데이터는 결과로 반환됩니다.
setNames(dat, c(names(dat)[1], "value"))
업데이트 :가 names
에 의한 복사의 일부를 방지하기 위해, 당신은 또한 attr<-
attr(dat, "names")[2] <- "value"
그리고 코멘트에 아난다가 언급 한 바와 같이, 아니 복사를 들어, data.table
사용할 수 있습니다 사용할 수 있습니다
library(data.table)
setnames(dat, "X1041L", "value")
다음은 복사를 보여줍니다.
> tracemem(dat)
# [1] "<0x23289b0>"
> names(dat)[2] <- "value"
# tracemem[0x23289b0 -> 0x26a1270]:
# tracemem[0x26a1270 -> 0x2244030]:
# tracemem[0x2244030 -> 0x26b9508]:
> tracemem(dat)
# [1] "<0x26b9508>"
> attr(dat, "names")[2] <- "value"
# tracemem[0x26b9508 -> 0x23dbd50]:
> library(data.table)
> tracemem(dat)
# [1] "<0x28c4408>"
> setnames(dat, "X1041L", "value")
이런 식으로 패키지를로드하는 것은 과도한 것처럼 보일 수 있지만 "data.table"의 setnames는 복사본을 만들지 않고이 작업을 수행합니다. 'tracemem (dat)을 이용한 실험; tracemem (dat)과 비교되는 names (dat) [2] <- "value"; setnames (dat, "X1041L", "value")'. – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto - 점을 찍었으나'이름 '에서 일부 복사를 피하기 위해'attr (dat, "names") [2] <- "value"'를 사용할 수도 있습니다. DT가 여전히이기는하지만. :-) –