만약 이미 정의된 데이터 프레임에서 컬럼 이름 colname에 데이터 y를 저장하고자 한다면 d$colname <- y 문법을 사용한다. 다음은 x 컬럼의 값을 1, 2, 3, 4, 5에서 6, 7, 8, 9, 10으로 바꾸는 예다.
> d <- data.frame(x=c(1, 2, 3, 4, 5), + y=c(2, 4, 6, 8, 10), + z=c('M', 'F', 'M', 'F', 'M')) > d$x [1] 1 2 3 4 5 > d$x <- 6:10 > d x y z 1 6 2 M 2 7 4 F 3 8 6 M 4 9 8 F 5 10 10 M
위의 데이터 프레임 d에 기존에 없던 컬럼 w를 추가하고자 할 때도 같은 문법을 사용한다.
> d$w <- c("A", "B", "C", "D", "E") > d x y z w 1 6 2 M A 2 7 4 F B 3 8 6 M C 4 9 8 F D 5 10 10 M E
한 가지 특이할 만한 점은 w 컬럼에 저장한 데이터가 벡터므로 d$w의 데이터 타입 역시 chr(문자열 벡터)이라는 점이다. 이는 data.frame( )에 문자열 벡터를 지정할 때 stringsAsFactor를 지정하지 않으면 문자열이 팩터로 바뀌는 것과는 다른 점이다.
> str(d)
'data.frame': 5 obs. of 4 variables:
$ x: int 6 7 8 9 10
$ y: num 2 4 6 8 10
$ z: Factor w/ 2 levels "F","M": 2 1 2 1 2
$ w: chr "A" "B" "C" "D" ...
데이터 프레임의 행 이름, 컬럼 이름은 각각 rownames( ), colnames( ) 함수로 지정할 수 있다.
> (x <- data.frame(1:3)) X1.3 1 1 2 2 3 3 > colnames(x) <- c('val') > x val 1 1 2 2 3 3 > rownames(x) <- c('a', 'b', 'c') > x val a 1 b 2 c 3
또는 names( )를 사용해도 colnames( )와 같은 결과를 얻는다.