Ada*_*NYC 69 r dataframe data.table
我刚开始使用R,并遇到了data.table.我发现它很棒.
一个非常天真的问题:我可以忽略data.frame来使用data.table来避免两个包之间的语法混淆吗?
Ama*_*nda 61
作为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
induplicate.c
,这比C中的for循环要快得多.这将改进R在内部复制数据的方式(在某些度量上复制13次).r-devel上的帖子在这里:http://tolstoy.newcastle.edu.au/R/e10/devel/10/04/0148.html.
data.frame
指的是第3行,但是DT[3]
指的是第3列DF[3]
但DT[3, ] == DT[3]
(有点令人困惑)- 出于这个原因,我们说逗号在DT中是可选的,但在DF中不是可选的
DF[ , 3] == DF[3]
DT
其中i是单个整数,返回单行,就像DF
,但不像返回向量的矩阵单行子集.DT[[3]] == DF[, 3] == DF[[3]]
其中j是单个整数,返回一列data.table,与之不同DT[i, ]
,默认情况下返回一个向量i
.DF[i, ]
DT[ , j]
j
返回1行NA,但DF[, j]
返回包含NA的DF副本.- 该符号
DT[ , "colA"][[1]] == DF[ , "colA"]
在R中是逻辑类型,因此被回收DT[ , colA] == DF[ , "colA"]
.意图可能是DT[ , list(colA)] == DF[ , "colA", drop = FALSE]
.DT[NA]
这样做是为了方便起见.NA
将NA视为FALSE,但 为每个DF[NA]
返回NA行DF
NA
比...更简单NA
logical
创建3列,[.data.frame
创建一个列表列.DF[NA_integer_]
默认情况下[.data.table
在DT[c(TRUE, NA, FALSE)]
,但NA
在FALSE
,为了方便.DF[c(TRUE, NA, FALSE)]
为了提高效率,默认情况下为TRUE,NA
但为FALSENA
.- 由于全局字符串缓存已添加到R,因此字符项是指向单个缓存字符串的指针,并且不再具有转换为因子的性能优势.
- 列表列中的原子向量在data.frame中使用","打印时折叠,但在data.table中使用",",在第6项之后使用尾随逗号,以避免意外打印大型嵌入对象.
- 在
DT[ColA == ColB]
我们经常设定DF[!is.na(ColA) & !is.na(ColB) & ColA == ColB, ]
.当我们忘记时,在选择单列并且突然返回向量而不是单个列data.frame的边缘情况下会出现错误.在data.frame(list(1:2, "k", 1:4))
我们抓住机会使其保持一致和下降.- 当data.table传递给data.table-unaware包时,该包不关心任何这些差异; 它只是工作
可能存在这样的情况:某些软件包使用的代码在给定data.frame时会丢失,但是,考虑list
到为了避免此类问题而不断维护,可能会出现的任何问题都会立即得到解决.
例如
来自NEW 1.8 for v 1.8.2
- base :: unname(DT)现在可以再次使用,plyr :: melt()需要它.感谢Christoph Jaeckel的报道.测试补充.
- 为ITime添加了一个as.data.frame方法,因此ITime可以无错误地传递给ggplot2,#1713.感谢Farrel Buchinsky的报道.测试补充说.ITime轴标签仍显示为午夜的整数秒; 我们不知道为什么ggplot2不会调用ITime的as.character方法.将ITime转换为POSIXct for ggplot2,是一种方法.