[英]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.