由於@joran說,爲什麼你會永遠要做到這一點還不清楚。儘管如此,這是可能的。
數據框的要求之一是所有的列都有相同的行數。這就是你遇到錯誤的原因。像這樣將工作:
dfi <- data.frame(v1=c(1,1),v2=c(2,2)) # 2 rows
df <- data.frame(x=1:2) # also 2 rows
df$df <- dfi # works now
印刷會導致你相信df
有三列...
df
# x df.v1 df.v2
# 1 1 1 2
# 2 2 1 2
,但它不會!
str(df)
# 'data.frame': 2 obs. of 2 variables:
# $ x : int 1 2
# $ df:'data.frame': 2 obs. of 2 variables:
# ..$ v1: num 1 1
# ..$ v2: num 2 2
由於df$df
是數據幀
class(df$df)
# [1] "data.frame"
可以使用標準的數據幀的存取...
df$df$v1
# [1] 1 1
df$df[1,]
# v1 v2
# 1 1 2
順便提及,RStudio具有顯示這種類型的數據結構的麻煩; view(df)
給出了結構的不準確顯示。
最後,你可能關閉創建數據幀列表更好,而不是包含數據幀的數據幀:
df <- data.frame(grp=rep(LETTERS[1:3],each=5),x=rnorm(15),y=rpois(15,5))
df.lst <- split(df,df$grp) # creates a list of data frames
df.lst$A
# grp x y
# 1 A -1.3606420 10
# 2 A -0.4511408 5
# 3 A -1.1951950 4
# 4 A -0.8017765 5
# 5 A -0.2816298 9
df.lst$A$x
# [1] -1.3606420 -0.4511408 -1.1951950 -0.8017765 -0.2816298
究竟是什麼你想實現什麼?如果你想將dfi的內容傳遞給df,使用下面的代碼:df < - data.frame(matrix(vector(),0,2,dimnames = list(c(),c(「V1」,「V2」)) ),stringsAsFactors = F) df = dfi – Docconcoct 2014-11-09 00:36:38
包含數據幀的數據幀是非常不尋常的事情,R中幾乎沒有任何內容會被設計爲使用該格式的數據結構。 – joran 2014-11-09 00:42:55
它可能是列表的一部分,雖然這很常見。非常確定你知道這一點。 – KFB 2014-11-09 01:16:22