r - 将数据框附加到列表

标签 r dataframe

我想弄清楚如何将 data.frame 或 data.table 添加到列表中的第一个位置。

理想情况下,我想要一个结构如下的列表:

List of 4
 $  :'data.frame':  1 obs. of  3 variables:
  ..$ a: num 2
  ..$ b: num 1
  ..$ c: num 3
 $ d: num 4
 $ e: num 5
 $ f: num 6

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

问题是我需要在创建列表后将数据框添加到列表中,并且数据框必须是列表中的第一个元素。我想使用像 append 这样简单的东西来做到这一点。 ,但是当我尝试:
append(list(1,2,3),data.frame(a=2,b=1,c=3),after=0)

我得到一个结构化的列表:
str(append(list(1,2,3),data.frame(a=2,b=1,c=3),after=0))
List of 6
 $ a: num 2
 $ b: num 1
 $ c: num 3
 $  : num 1
 $  : num 2
 $  : num 3

当我尝试 append 时,R 似乎将 data.frame 强制转换为列表.我如何防止它这样做?或者可能有什么替代方法来构造这个列表,在列表的初始创建之后将 data.frame 插入到列表的位置 1 中。

最佳答案

您遇到的问题是要将数据框作为单个列表元素放入列表中的任何位置,它必须用 list() 包裹。 .我们来看一下。

df <- data.frame(1, 2, 3)
x <- as.list(1:3)

如果我们只用 c() 包裹,这是什么append()在幕后做,我们得到
c(df)
# $X1
# [1] 1
#
# $X2
# [1] 2
#
# $X3
# [1] 3

但是如果我们将它包装在 list() 中我们得到了包含数据框的所需列表元素。
list(df)
# [[1]]
#   X1 X2 X3
# 1  1  2  3

因此,由于 x已经是一个列表,我们将需要使用以下结构。
c(list(df), x) ## or append(x, list(df), 0)
# [[1]]
#   X1 X2 X3
# 1  1  2  3
#
# [[2]]
# [1] 1
#
# [[3]]
# [1] 2
#
# [[4]]
# [1] 3

关于r - 将数据框附加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33177118/

相关文章:

r - 使用 data.table 在两列之间交换值

r - 如何从 clusterApply 打印?

r - geom_text 没有标记闪避的 geom_bar

python - 如何将 Period 字符串转换为实际的 Period 类型

python - pandas 数据框按组和日期计算重复项

r - 语法错误后终止 "+"符号

r - 使用 rpy2 访问名称中带有点的函数(例如 "as.vector")

python - 如何找出每种产品在 Pandas DataFrame 中的销量

r - 循环数据框并考虑值的类型

Pandas:如何在将系列分配为行时将缺失的列添加到 DataFrame