2014-09-13 8 views

답변

1

당신은 또한 기본적으로 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") 
+0

이런 식으로 패키지를로드하는 것은 과도한 것처럼 보일 수 있지만 "data.table"의 setnames는 복사본을 만들지 않고이 작업을 수행합니다. 'tracemem (dat)을 이용한 실험; tracemem (dat)과 비교되는 names (dat) [2] <- "value"; setnames (dat, "X1041L", "value")'. – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto - 점을 찍었으나'이름 '에서 일부 복사를 피하기 위해'attr (dat, "names") [2] <- "value"'를 사용할 수도 있습니다. DT가 여전히이기는하지만. :-) –

관련 문제