簡體   English   中英

將數據框附加到列表

[英]Append a data frame to a list

我試圖弄清楚如何將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM