data.table로 할 수 없는 data.frame으로 할 수 있는 작업?
저는 방금 R을 사용하기 시작했는데, data.table을 발견했습니다.훌륭하다고 생각했습니다.
매우 순진한 질문: data.frame을 무시하고 data.table을 사용하여 두 패키지 간의 구문 혼란을 방지할 수 있습니까?
FAQ 1.8 OK, data.table이 무엇에 관한 것인지 알아보기 시작했는데, 왜 data.frame을 R에서 향상시키지 않았습니까?왜 그것이 새 소포여야만 합니까?
FAQ 1.1 하이라이트로,
j
인에[.data.table
와 근본적으로 다릅니다.j
인에[.data.frame
. 아주 간단한 것이라도DF[,1]
많은 패키지와 사용자 코드에서 기존 코드를 깰 것입니다.이것은 설계에 의한 것이며, 우리는 이것이 더 복잡한 구문을 작동시키기 위해 이런 식으로 작동하기를 원합니다.다른 차이점도 있습니다(FAQ 2.17 참조).더 나아가,
data.table
에서 물려받음data.frame
. 그것은.data.frame
, 나도. Adata.table
오직 수락하는 모든 패키지로 전달될 수속만 가능합니다.data.frame
그리고 그 소포는 사용할 수 있습니다.[.data.frame
의 구문data.table
.우리는 R에 대해서도 가능한 한 개선할 것을 제안했습니다.이 중 하나가 R 2.12.0의 새로운 기능으로 승인되었습니다.
unique()
그리고.match()
이제 모든 요소가 전역에 있는 문자 벡터에서 더 빠릅니다.CHARSXP
캐시하고 표시되지 않은 인코딩(ASCII)을 가집니다.해시 코드가 생성되는 방법에 대한 개선점을 제시해 준 Matthew Dowle에게 감사드립니다.unique.
c.두 번째 제안은 다음과 같은 것이었습니다.
memcpy
인에duplicate.c
, C의 루프보다 훨씬 빠릅니다.이렇게 하면 R이 내부적으로 데이터를 복사하는 방식이 13배 향상됩니다.r-devel의 스레드는 다음과 같습니다. http://tolstoy.newcastle.edu.au/R/e10/devel/10/04/0148.html .
다음 중 구문의 차이가 작은 것은 무엇입니까?data.frame
데이터.표
DT[3]
세 번째 행을 가리켰지만,DF[3]
3열을 참조합니다.DT[3, ] == DT[3]
,그렇지만DF[ , 3] == DF[3]
(data.frame에서는 somewhat이 혼동되지만 data.table은 일관됨)- 이러한 이유로 우리는 쉼표가 선택 사항이라고 말합니다.
DT
, 에서 선택사항은 아닙니다.DF
DT[[3]] == DF[, 3] == DF[[3]]
DT[i, ]
,어디에i
는 단일 정수이며 단일 행을 반환합니다.DF[i, ]
, 그러나 벡터를 반환하는 행렬 단일 행 부분 집합과는 다릅니다.DT[ , j]
어디에j
is 단일 정수는 1열 데이터를 반환합니다.table은 그렇지 않습니다.DF[, j]
기본적으로 벡터를 반환합니다.DT[ , "colA"][[1]] == DF[ , "colA"]
.DT[ , colA] == DF[ , "colA"]
(현재 data.table v1.9.8에 있지만 곧 변경됩니다. 릴리스 정보 참조)DT[ , list(colA)] == DF[ , "colA", drop = FALSE]
DT[NA]
1행을 반환합니다.NA
,그렇지만DF[NA]
합니다의 전체 합니다.DF
gNA
내내. 가.NA
logical
서 랜드됩니다에 됩니다.[.data.frame
는 . 입니다.DF[NA_integer_]
.[.data.table
편의를 위해 자동으로 이 가능한 의도로 전환됩니다.DT[c(TRUE, NA, FALSE)]
하다,료를 합니다.NA
~하듯이FALSE
,그렇지만DF[c(TRUE, NA, FALSE)]
sNA
의 행NA
DT[ColA == ColB]
다보다 .DF[!is.na(ColA) & !is.na(ColB) & ColA == ColB, ]
data.frame(list(1:2, "k", 1:4))
의 열,은 1개의 하고, data.table합니다를 .list
기둥.check.names
입니다.TRUE
인에data.frame
그렇지만FALSE
데이터.표에 기재되어 있습니다.stringsAsFactors
입니다.TRUE
인에data.frame
그렇지만FALSE
효율성을 위해 data.table로 입력합니다.이며 더 이상가 R다하는 성능 .factor
.list
를 사용하여 할 때 됩니다.", "
인에data.frame
,그렇지만","
data.table에서 6번째 항목 뒤에 후행 쉼표가 있어 큰 내장 객체의 실수 인쇄를 방지할 수 있습니다.[.data.frame
우리는 매우 자주 설정합니다.drop = FALSE
가 잊어버렸을 하고 단일 이 아닌 벡터가 갑자기 할 수 . , .data.frame
. 인.[.data.table
을 일관되게 를 잡았고다,를 떨어뜨렸습니다.drop
되면 해당 는 이러한 고려하지 data.table이 data.table-unwareness 패키지로 전달되면 해당 패키지는 이러한 차이점과 관련이 없으며, 단지 작동할 뿐입니다.
작은주의사항
는 data.frame이 인 할 때 수 .data.table
이러한 문제를 방지하기 위해 지속적으로 유지 관리되고 있으며, 발생할 수 있는 문제는 즉시 해결됩니다.
예를들면
뉴스 for v 1.8.2
- base::unname(DT)는 이제 plyr::melt()에서 필요에 따라 다시 작동합니다.보도해주신 크리스토프 제이켈씨께 감사드립니다.테스트 추가.
- ITime에 대해 as.data.frame 메서드가 추가되어 오류 없이 ggplot2에 ITime을 전달할 수 있습니다. #1713.보도해주신 패럴 부킨스키 씨께 감사드립니다.테스트 추가.ITime 축 레이블은 자정부터 정수 초로 계속 표시됩니다. ggplot2가 ITime의 as.character 메서드를 호출하지 않는 이유를 알 수 없습니다.ggplot2에 대해 IT 시간을 POSIXct로 변환하는 것이 하나의 접근법입니다.
언급URL : https://stackoverflow.com/questions/13618488/what-you-can-do-with-a-data-frame-that-you-cant-with-a-data-table
'programing' 카테고리의 다른 글
숏코드 콜백 내에서 HEAD에 워드 프레스 추가 (0) | 2023.09.28 |
---|---|
MariaDB 테이블과 테이블 열에서 특정 문자를 대체할 수 있는 제안 사항이 있습니까? (0) | 2023.09.28 |
효과가 끝날 때까지 jQuery를 기다리게 하는 방법은? (0) | 2023.09.28 |
DBD 설치 방법:: 딸기 펄 속의 오라클 (0) | 2023.09.28 |
비트 와이즈 연산자를 사용하여 숫자가 양수인지 음수인지 확인 (0) | 2023.09.28 |