以下代码
library(data.table)
dt<-data.table(a=list(b=list(c=list(d=list(e=list("f"))))))
使用一个由列表组成的列'a'创建一个data.table:
> dt
a
1: <list>
“ a”列表由一个或一组嵌套列表组成。但是,data.table忘记了'a'中第一个列表的名称:
> dt$a
[[1]]
[[1]]$c
[[1]]$c$d
[[1]]$c$d$e
[[1]]$c$d$e[[1]]
[1] "f"
为什么呢?名称为b的列表将如何处理?如何按名称访问列表b?
答案 0 :(得分:1)
Data.table是矩形格式-在您的情况下,您的表只有一行和一列。如果您确实想将复杂对象存储在data.table或data.frame单元格中,则可以将它们包含在列表中:
dt<-data.table(a=list(list(b=list(c=list(d=list(e=list("f")))))))
为什么b
的名称丢失而没有多余的list
?我想这是因为a
的第一个元素被解释为进入第一行的内容,并且data.table中没有行名。提供命名向量时,也会发生类似的情况:
> dt2 <- data.table(a=c(b=1,c=2,d=3))
> dt2
a
1: 1
2: 2
3: 3
(向量元素的名称已丢失,无法将其取回。)
这与data.frame不同:
> data.frame(a=c(b=1,c=2,d=3))
a
b 1
c 2
d 3