data.table在打印

时间:2017-06-15 05:49:58

标签: r data.table

假设我们在data.table中有一个列表列:

> dt = data.table( x = list( as.list( 1:4 ) ) )
> dt
        x
1: <list>

当我通过x访问dtj的第一个索引时,x会自动强制转换为data.table

> dt[, x[[1]] ]
   V1 V2 V3 V4
1:  1  2  3  4
> dt
              x
1: <data.table>

仅在访问和打印时才会出现此行为。访问或打印的替代表达方式不会导致强制:

> #Accessing only
> dt[, {z = x[[1]];NULL} ]
NULL
> dt
        x
1: <list>
> #Accessing and printing
> dt[, {z = x[[1]];print(z);NULL} ]
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

NULL
> dt
        x
1: <list>

此外,当我在x环境之外访问dt时,我无法在x内获得dt的强制。

> dt[ , x ][[1]]
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

> dt
        x
1: <list>

我只是想知道是否有办法阻止这种自动强制?我还有其他data.table个列表列,其中一些行可以转换为data.table,而其他行的元素数量不规则,只能是list

0 个答案:

没有答案