gpt4 book ai didi

r - 表格的data.table 与表格的data.frame 有很大不同

转载 作者:行者123 更新时间:2023-12-04 08:10:19 26 4
gpt4 key购买 nike

我知道tablenot the preferred way将频率表制作为 data.table .但是假设我有一个 table ,无论出于何种原因,我想转换为 data.table . data.table转换的工作方式与 data.frame 不同转换做:

library(data.table)
tab <- table(1:101)
DF.tab <- data.frame(tab)
DT.tab <- data.table(tab)
data.frame转换 table数据成 data.frame , 而 data.table尝试存储原始 table对象作为列。 (我已经用 tab <- table(1:n) 测试了 n 的多个值,以及其他示例。)
> str(DF.tab)
'data.frame': 101 obs. of 2 variables:
$ Var1: Factor w/ 101 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Freq: int 1 1 1 1 1 1 1 1 1 1 ...
> str(DT.tab)
Classes ‘data.table’ and 'data.frame': 101 obs. of 1 variable:
$ tab: 'table' int [1:101(1d)] 1 1 1 1 1 1 1 1 1 1 ...
..- attr(*, "dimnames")=List of 1
.. ..$ : chr "1" "2" "3" "4" ...
- attr(*, ".internal.selfref")=<externalptr>

另请注意,虽然 as.data.framedata.frame 的工作方式相同, as.data.table完全失败:
> as.data.table(tab)
Error in UseMethod("as.data.table") :
no applicable method for 'as.data.table' applied to an object of class "table"

在似乎是一个非常密切相关的问题中,如果表足够大(非正式测试表明 .Dim > 100 ),我在尝试 print 时会遇到非常奇怪的错误。 :
> print(data.table(table(1:101)))
Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
dims [product 5] do not match the length of object [10]

请注意 print(data.table(table(1:100)))没有错误,但只显示一列 V1 , 而 print(data.frame(table(1:100)))Var1Freq列。

有没有比 data.table(data.frame(...)) 更好的解决方法?我最好总是尽量避免table完全? 并且是 print由这个直接引起的错误,还是更深层次的东西?

最佳答案

有一个as.data.frame.tabledata.frame(tbl-object) 调用的函数.它将类似矩阵的表对象转换为长格式数据对象。似乎还没有 as.data.table.table 函数,可以说应该有,我同意它的行为方式与 as.data.frame 方法相同,而不是从矩阵继承(这是 table 的方式通常继承:

> data.table(matrix(1:10, 2))
V1 V2 V3 V4 V5
1: 1 3 5 7 9
2: 2 4 6 8 10
> data.table(as.table(matrix(1:10, 2)))
Error in UseMethod("as.data.table") :
no applicable method for 'as.data.table' applied to an object of class "table"
> data.table(as.data.frame(as.table(matrix(1:10, 2))))
Var1 Var2 Freq
1: A A 1
2: B A 2
3: A B 3
4: B B 4
5: A C 5
6: B C 6
7: A D 7
8: B D 8
9: A E 9
10: B E 10

我认为这应该是一个功能请求,我认为它与第二个问题无关。

你的第二个问题似乎是一个错误。 data.table最突出的作者@MatthewDowle 通常非常敏感,您应该考虑提交报告。

关于r - 表格的data.table 与表格的data.frame 有很大不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com