簡體   English   中英

將數據框列表轉換為嵌套數據框

[英]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_listb_listc_list是嵌套列表,其中每個元素都有一些字符串屬性。 例如, a_list有 X 行,每行都有屬性namelabelvalue 所以我想實現一個解決方案,我可以像這樣訪問嵌套的數據框:

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.

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