R data.table在打印时自动将嵌套列表强制为data.table

R data.table在打印时自动将嵌套列表强制为data.table,r,data.table,R,Data.table,假设我们在数据表中有一个列表列 > dt = data.table( x = list( as.list( 1:4 ) ) ) > dt x 1: <list> 只有在如上所述访问和打印时,才会出现这种行为。访问或打印的替代表达式不会导致强制: > #Accessing only > dt[, {z = x[[1]];NULL} ] NULL > dt x 1: <list> > #Accessing

假设我们在
数据表中有一个列表列

> dt = data.table( x = list( as.list( 1:4 ) ) )
> dt
        x
1: <list>
只有在如上所述访问和打印时,才会出现这种行为。访问或打印的替代表达式不会导致强制:

> #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>

我只是想知道是否有什么方法可以防止这种自动强制?我还有其他的
数据。表
带有列表列,其中一些行可以转换为
数据。表
而其他表的元素数量不规则,因此它们只能是
列表

我想你很难理解
列表
和data.frame,data.table列的区别。在数据集中,它是列表的列表。当您执行
x[[1]]
时,您会得到一个包含4个元素的
列表,但问题是data.frame或data.table是一个长度相等的向量列表,这是一个特性。我们通常这样使用:
DT[,(mean=mean(col))]
。在你的例子中使用
dt[[“x”][[1]]
。我想你很难理解
列表和data.frame、data.table列的区别。在数据集中,它是列表的列表。当您执行
x[[1]]
时,您会得到一个包含4个元素的
列表,但问题是data.frame或data.table是一个长度相等的向量列表,这是一个特性。我们通常这样使用:
DT[,(mean=mean(col))]
。在您的案例中使用
dt[[“x”][[1]]
> #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>
> dt[ , x ][[1]]
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

> dt
        x
1: <list>