다음은 아이리스 데이터 프레임을 데이터 테이블로 변환하는 예다. 데이터를 출력했을 때 전체가 화면에 출력되는 데이터 프레임과 달리 데이터의 일부만 잘려 보이는 점은 데이터 테이블의 특징이다. 더 많은 데이터를 출력하려면 iris_table[1:n, ]처럼 행 번호를 직접 지정하거나 print(dt, nrows=Inf) 명령을 사용한다.
> (iris_table <- as.data.table(iris))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1: 5.1 3.5 1.4 0.2 setosa
2: 4.9 3.0 1.4 0.2 setosa
3: 4.7 3.2 1.3 0.2 setosa
4: 4.6 3.1 1.5 0.2 setosa
5: 5.0 3.6 1.4 0.2 setosa
---
146: 6.7 3.0 5.2 2.3 virginica
147: 6.3 2.5 5.0 1.9 virginica
148: 6.5 3.0 5.2 2.0 virginica
149: 6.2 3.4 5.4 2.3 virginica
150: 5.9 3.0 5.1 1.8 virginica
다음은 데이터 테이블을 직접 생성하는 예다.
> (x <- data.table(x=c(1, 2, 3), y=c("a", "b", "c")))
x y
1: 1 a
2: 2 b
3: 3 c
이 절의 시작 부분에서 언급한 것처럼 데이터 테이블은 데이터 프레임과 동일하게 취급된다. 다음 코드는 데이터 테이블의 클래스가 data.frame을 포함하고 있음을 보여준다. 클래스가 data.frame을 포함하므로 summary, print, plot 등의 데이터 프레임을 처리하는 함수들이 데이터 테이블에도 동일하게 동작한다. 다시 말해, data.frame을 인자로 기대하는 함수에 데이터 테이블을 넘겨도 많은 경우 별 문제없이 동작한다. 만약 예외적으로 잘 동작하지 않는 함수가 있다면 as.data.frame( )을 사용해 데이터 테이블을 데이터 프레임으로 변환하면 된다.
> class(data.table())
[1] "data.table" "data.frame"
이렇게 만든 데이터 테이블들의 목록은 tables( )로 열람할 수 있다.
> iris_table <- as.data.table(iris) > x <- data.table(x=c(1, 2, 3), y=c("a", "b", "c")) > tables() NAME NROW MB [1,] iris_table 150 1 [2,] x 3 1 COLS KEY [1,] Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species [2,] x,y Total: 2MB