[英]Transform a list of dataframes to a nested dataframe
我正在努力解決這個問題:
我有三個數據框列表(每個列表的行數相同,每個數據框有 3 列)。 我想將列表組合成一個嵌套數據框,以便有 3 列(列表一列)。
示例代碼:
a_list_of_dfs <- lapply(seq_along(a_list), function(i) {
tibble(x = a_list[[i]]$x,
y = a_list[[i]]$y,
z = a_list[[i]]$z)
})
b_list_of_dfs <- lapply(seq_along(b_list), function(i) {
tibble(x = b_list[[i]]$x,
y = b_list[[i]]$y,
z = b_list[[i]]$z)
})
c_list_of_dfs <- lapply(seq_along(c_list), function(i) {
tibble(x = c_list[[i]]$x,
y = c_list[[i]]$y,
z = c_list[[i]]$z)
})
nested_df <- tibble(a=a_list_of_df,
b=b_list_of_df,
c=c_list_of_df)
問題是,這個解決方案沒有給我想要的結果。 這個想法是能夠像這樣訪問嵌套的數據框:
nested_df$a$x
我怎樣才能改變它以獲得我想要的結果?
編輯:
a_list
、 b_list
和c_list
是嵌套列表,其中每個元素都有一些字符串屬性。 例如, a_list
有 X 行,每行都有屬性name
、 label
和value
。 所以我想實現一個解決方案,我可以像這樣訪問嵌套的數據框:
nested_df$a$name # and value etc.
下面dput
函數的結果(僅保留前兩個元素,列表中的結構相同):
`list(structure(list(name = "VS", label = "VS",
value = "SUM"), .Names = c("name",
"label", "value")), structure(list(name = "VP",
label = "VP", value = "SUM"), .Names = c("name",
"label", "value")),`
我的解決方案
將數據框而不是 1 行數據框列表作為列傳遞對我有用。
您的數據結構不是很清楚,因為您的樣本有點小。 但這是否符合您的要求?
library(tidyverse)
df <- list(structure(list(name = "VS", label = "VS", value = "SUM"),
.Names = c("name", "label", "value")),
structure(list(name = "VP", label = "VP", value = "SUM"),
.Names = c("name", "label", "value")))
df <- df %>% set_names(c("a", "b"))
df$a$name
df %>% as_tibble()
您應該命名列表元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.