我刚开始使用R,发现了一些数据.桌子我觉得它很棒.
一个非常天真的问题:我可以忽略数据吗.使用数据的框架.表以避免两个包之间的语法混淆?
我刚开始使用R,发现了一些数据.桌子我觉得它很棒.
一个非常天真的问题:我可以忽略数据吗.使用数据的框架.表以避免两个包之间的语法混淆?
正如常见问题1.1所强调的,
[.data.table
中的j
基本上是此外,
data.table
人继承了data.frame
人.这是一个我们还建议尽可能增强R.什么之中的一个
unique()
和match()
现在在所有元素都在全局CHARSXP
缓存中且未标记的字符向量上更快第二个建议是在
duplicate.c
中使用memcpy
,这非常重要
data.frame
and data.table
DT[3]
表示第三个row,但DF[3]
表示第三个columnDT[3, ] == DT[3]
,但DF[ , 3] == DF[3]
(在data.frame中有点令人困惑,而data.table是一致的)- 因此,我们说逗号是optional/
DT
,但在DF
中不是可选的DT[[3]] == DF[, 3] == DF[[3]]
DT[i, ]
,其中i
是一个整数,返回一行,就像DF[i, ]
一样,但不同于返回向量的矩阵单行子集.DT[ , j]
,其中j
是单个整数,返回一列数据.表,与默认情况下返回向量的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]
返回NA
的一行,但DF[NA]
返回DF
的整个副本,其中包含NA
.符号NA
是R中的logical
型,因此由[.data.frame
循环使用.用户的意图可能是DF[NA_integer_]
.为了方便起见,[.data.table
自动转向这个可能的意图.DT[c(TRUE, NA, FALSE)]
将NA
视为FALSE
,但DF[c(TRUE, NA, FALSE)]
返回DT[ColA == ColB]
比DF[!is.na(ColA) & !is.na(ColB) & ColA == ColB, ]
简单data.frame(list(1:2, "k", 1:4))
创建3列数据.表创建一个list
列.check.names
在data.frame
中默认为TRUE
,但在数据中为FALSE
.桌子,为了方便.stringsAsFactors
在data.frame
中默认为TRUE
,但在数据中为FALSE
.桌子,为了效率.由于在R中添加了全局字符串缓存,字符项是指向单个缓存字符串的指针,因此转换为factor
不再具有性能优势.- 当使用
data.frame
中的", "
,但数据中的","
打印时,list
列中的原子向量被折叠.表的第6项后面带有逗号,以避免意外打印大型嵌入对象.
在某些情况下,某些软件包可能会使用在给定数据时失败的代码.然而,鉴于data.table
一直在维护以避免此类问题,任何可能出现的问题都将被及时修复.
例如
一百
来自1.8.2版的新闻
- 根据plyr::melt()的需要,base::unname(DT)现在可以再次工作.幸亏
- 一个as.数据为ITime添加了frame方法,以便ITime可以传递给ggplot2