Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-使用数据帧部分展平嵌套列表_R - Fatal编程技术网

R-使用数据帧部分展平嵌套列表

R-使用数据帧部分展平嵌套列表,r,R,我有一个结构如下的列表: $ List (length 13) ; 13 Types $ --- Lists (Length 4) ; Each have 4 subsets of the same original data $ ------- Dataframes 1, 2, 3, and 4 ; for each of 13 types 我想要 $ List (length 52) ; 52 Versions (Type_Subset) $ --- Dataframes 1, 2, 3,

我有一个结构如下的列表:

$ List (length 13) ; 13 Types
$ --- Lists (Length 4) ; Each have 4 subsets of the same original data
$ ------- Dataframes 1, 2, 3, and 4 ; for each of 13 types
我想要

$ List (length 52) ; 52 Versions (Type_Subset)
$ --- Dataframes 1, 2, 3, ... 52 ; As separate elements in list
使用下面的
mtcars
示例,我将如何做到这一点

df <- list(Blue = list(mtcars[1:3,], mtcars[4:6,], mtcars[7:9,]), 
     Red = list(mtcars[10:12,], mtcars[13:15,], mtcars[16:18,]), 
     Green = list(mtcars[18:20,], mtcars[21:23,], mtcars[24:26,]))

  # Need function on df ...
  # new_df <- SingleNestLevel(df)

# Which yields: 

    list(Blue1 = mtcars[1:3,], 
         Blue2 = mtcars[4:6,], 
         Blue3 = mtcars[7:9,], 
         Red1 = mtcars[10:12,], 
         Red2 = mtcars[13:15,], 
         Red3 = mtcars[16:18,], 
         Green1 = mtcars[18:20,], 
         Green2 = mtcars[21:23,], 
         Green3 = mtcars[24:26,])

df我认为这将您的问题概括为任何嵌套列表:

library(purrr)

new_df <- flatten(df) %>% 
  setNames(paste0(rep(names(df), times = map_int(df, ~length(.x))),
                  unlist(map(df, ~1:length(.x)))))
库(purrr)
新的_df%
setNames(paste0(rep(name(df),times=map_int(df,~length(.x))),
未列出(映射(df,~1:length(.x()())))

使用相同的库
数据。表
您可以尝试

library(data.table)
df <- copy(mtcars[1:27,]) # copying reserved dataset mtcars.
setDT(df, keep.rownames = TRUE)[,v1 :=rep(unlist(lapply(c("Blue","Red", "Green"),paste, 1:3, sep = "")),
                                          each = 3)]  #including temporary variable v1
df <- split(df, df$v1) #spliting into a list
df <- lapply(df, function(x) x[,v1 := NULL]) #removing temporary variable nv1

df #Returns

$Blue1
              rn  mpg cyl disp  hp drat    wt  qsec vs am gear carb
1:     Mazda RX4 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
2: Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
3:    Datsun 710 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

$Blue2
                  rn  mpg cyl disp  hp drat    wt  qsec vs am gear carb
1:    Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
2: Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
3:           Valiant 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

$Blue3
           rn  mpg cyl  disp  hp drat   wt  qsec vs am gear carb
1: Duster 360 14.3   8 360.0 245 3.21 3.57 15.84  0  0    3    4
2:  Merc 240D 24.4   4 146.7  62 3.69 3.19 20.00  1  0    4    2
3:   Merc 230 22.8   4 140.8  95 3.92 3.15 22.90  1  0    4    2

$Green1
               rn  mpg cyl  disp hp drat    wt  qsec vs am gear carb
1:    Honda Civic 30.4   4  75.7 52 4.93 1.615 18.52  1  1    4    2
2: Toyota Corolla 33.9   4  71.1 65 4.22 1.835 19.90  1  1    4    1
3:  Toyota Corona 21.5   4 120.1 97 3.70 2.465 20.01  1  0    3    1

$Green2
                 rn  mpg cyl disp  hp drat    wt  qsec vs am gear carb
1: Dodge Challenger 15.5   8  318 150 2.76 3.520 16.87  0  0    3    2
2:      AMC Javelin 15.2   8  304 150 3.15 3.435 17.30  0  0    3    2
3:       Camaro Z28 13.3   8  350 245 3.73 3.840 15.41  0  0    3    4

$Green3
                 rn  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
1: Pontiac Firebird 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
2:        Fiat X1-9 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
3:    Porsche 914-2 26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2

$Red1
           rn  mpg cyl  disp  hp drat   wt qsec vs am gear carb
1:   Merc 280 19.2   6 167.6 123 3.92 3.44 18.3  1  0    4    4
2:  Merc 280C 17.8   6 167.6 123 3.92 3.44 18.9  1  0    4    4
3: Merc 450SE 16.4   8 275.8 180 3.07 4.07 17.4  0  0    3    3

$Red2
                   rn  mpg cyl  disp  hp drat   wt  qsec vs am gear carb
1:         Merc 450SL 17.3   8 275.8 180 3.07 3.73 17.60  0  0    3    3
2:        Merc 450SLC 15.2   8 275.8 180 3.07 3.78 18.00  0  0    3    3
3: Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.25 17.98  0  0    3    4

$Red3
                    rn  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
1: Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
2:   Chrysler Imperial 14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
3:            Fiat 128 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
库(data.table)
df只需使用:

unlist(your_list,recursive=F)

很好,这是非常优雅和简单