将数据帧附加到列表中

我试图找出如何将data.frame或data.table添加到列表中的第一个位置

理想情况下,我希望列表的结构如下:

4个列表
$:'data.frame':1个obs。共有3个变量:
..$a:num 2
..$b:num 1
..$c:num 3
$d:num4
$e:num 5
$f:num 6

注意data.frame是列表结构中的一个对象

问题是我需要在创建列表后将数据框添加到列表中,并且数据框必须是列表中的第一个元素。我想使用类似于append的简单方法来实现这一点,但当我尝试时:

追加(列表(1,2,3),数据帧(a=2,b=1,c=3),后面=0)

我得到一个结构化的列表:

str(附加(列表(1,2,3),数据帧(a=2,b=1,c=3),后面=0))
6人名单
$a:num 2
$b:num 1
$c:num 3
$:num 1
$:num 2
$:num 3

当我试图追加时,R似乎正在将data.frame强制添加到列表中。我如何防止它这样做?或者,在列表初始创建后,有什么替代方法可以构建此列表,将data.frame插入位置1的列表中

您遇到的问题是,要将数据帧作为单个列表元素放入列表中的任意位置,必须使用list()对其进行包装。让我们看看

df<-数据帧(1,2,3)
x<-as.列表(1:3)

如果我们只是用c()包装,这就是append()在引擎盖下所做的,我们得到

c(df)
#$X1
# [1] 1
#
#$X2
# [1] 2
#
#$X3
# [1] 3

但是如果我们将它包装在list()中,我们将得到所需的包含数据帧的列表元素

列表(df)
# [[1]]
#x1x2x3
# 1  1  2  3

因此,由于x已经是一个列表,我们需要使用以下构造

c(列表(df),x)##或追加(x,列表(df),0)
# [[1]]
#x1x2x3
# 1  1  2  3
#
# [[2]]
# [1] 1
#
# [[3]]
# [1] 2
#
# [[4]]
# [1] 3

发表评论