我認爲split
正是你想要的。
注意,X爲數據幀的列表,所看到str
:
X <- split(df, df$g)
str(X)
如果你想與G團名個體對象,您可以X從split
要素分配到這些名稱的對象,儘管這看起來像額外的工作,當你可以索引從列表split
創建的列表中的數據幀。
#I used lapply just to drop the third column g which is no longer needed.
Y <- lapply(seq_along(X), function(x) as.data.frame(X[[x]])[, 1:2])
#Assign the dataframes in the list Y to individual objects
A <- Y[[1]]
B <- Y[[2]]
C <- Y[[3]]
D <- Y[[4]]
E <- Y[[5]]
#Or use lapply with assign to assign each piece to an object all at once
lapply(seq_along(Y), function(x) {
assign(c("A", "B", "C", "D", "E")[x], Y[[x]], envir=.GlobalEnv)
}
)
編輯或者不是使用lapply
更好的分配給全球環境中使用list2env
:
names(Y) <- c("A", "B", "C", "D", "E")
list2env(Y, envir = .GlobalEnv)
A
你能解釋一下什麼是錯的'分裂(DF,DF $ G)'?它返回'data.frame'的列表,每個'g'的值都有一個。 – 2012-03-15 03:00:28