Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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_List_Dataframe_Grouping_Lapply - Fatal编程技术网

R 将存储在列表中的数据帧分组为单独的新数据帧

R 将存储在列表中的数据帧分组为单独的新数据帧,r,list,dataframe,grouping,lapply,R,List,Dataframe,Grouping,Lapply,我有一个列表(dflist),其中包含数据帧(dfX),其中包含样本集合的测量值(例如样本1-3;samp)。每个数据帧本身包含使用特定仪器(例如仪器1-3;inst)测量的特定样本的测量值。例如,数据框1包含仪器1对样品1的测量值,数据框2包含仪器2对样品1的测量值,数据框3包含仪器1对样品3的测量值,依此类推 > a1 <- c('a1', 'b1', 'c1') > a2 <- c('a2', 'b2', 'c2') > a3 <- c('a3', 'b

我有一个列表(
dflist
),其中包含数据帧(
dfX
),其中包含样本集合的测量值(例如样本1-3;
samp
)。每个数据帧本身包含使用特定仪器(例如仪器1-3;
inst
)测量的特定样本的测量值。例如,数据框1包含仪器1对样品1的测量值,数据框2包含仪器2对样品1的测量值,数据框3包含仪器1对样品3的测量值,依此类推

> a1 <- c('a1', 'b1', 'c1')
> a2 <- c('a2', 'b2', 'c2')
> a3 <- c('a3', 'b3', 'c3')
> a4 <- c('a4', 'b4', 'c4')
> b1 <- c(1:3)
> b2 <- c(4:6)
> b3 <- c(7:9)
> b4 <- c(10:12)
> c1 <- c('samp1', 'samp1', 'samp1')
> c2 <- c('samp1', 'samp1', 'samp1')
> c3 <- c('samp2', 'samp2', 'samp2')
> c4 <- c('samp2', 'samp2', 'samp2')
> d1 <- c('inst1', 'inst1', 'inst1')
> d2 <- c('inst2', 'inst2', 'inst2')
> d3 <- c('inst1', 'inst1', 'inst1')
> d4 <- c('inst2', 'inst2', 'inst2')
> df1 <- data.frame(a1, b1, c1, d1)
> df2 <- data.frame(a2, b2, c2, d2)
> df3 <- data.frame(a3, b3, c3, d3)
> df4 <- data.frame(a4, b4, c4, d4)
> nams <- c('Reads', 'Mean_Val', 'Samp', 'Inst')
> dflist <- list(df1, df2, df3, df4)
> dflist <- lapply(dflist, setNames, nm=nams)
> dflist
[[1]]
  Reads Mean_Val  Samp  Inst
1    a1        1 samp1 inst1
2    b1        2 samp1 inst1
3    c1        3 samp1 inst1

[[2]]
  Reads Mean_Val  Samp  Inst
1    a2        4 samp1 inst2
2    b2        5 samp1 inst2
3    c2        6 samp1 inst2

[[3]]
  Reads Mean_Val  Samp  Inst
1    a3        7 samp2 inst1
2    b3        8 samp2 inst1
3    c3        9 samp2 inst1

[[4]]
  Reads Mean_Val  Samp  Inst
1    a4       10 samp2 inst2
2    b4       11 samp2 inst2
3    c4       12 samp2 inst2

我相信解决方案将涉及
合并
子集
,但我真的不知道如何做,就我而言,我已经完全走到了死胡同。

你可以将它们全部放在一起:

Reduce(rbind, dflist)
其中:

   Reads Mean_Val  Samp  Inst
1     a1        1 samp1 inst1
2     b1        2 samp1 inst1
3     c1        3 samp1 inst1
4     a2        4 samp1 inst2
5     b2        5 samp1 inst2
6     c2        6 samp1 inst2
7     a3        7 samp2 inst1
8     b3        8 samp2 inst1
9     c3        9 samp2 inst1
10    a4       10 samp2 inst2
11    b4       11 samp2 inst2
12    c4       12 samp2 inst2
如果要将其放回由示例分隔的数据帧列表中(尽管使用imho可能更容易处理完整的数据帧):


祝你好运

完成相同任务的整洁/dplyr方法是
dflist%>%bind_rows()%>%split(.$Samp)
   Reads Mean_Val  Samp  Inst
1     a1        1 samp1 inst1
2     b1        2 samp1 inst1
3     c1        3 samp1 inst1
4     a2        4 samp1 inst2
5     b2        5 samp1 inst2
6     c2        6 samp1 inst2
7     a3        7 samp2 inst1
8     b3        8 samp2 inst1
9     c3        9 samp2 inst1
10    a4       10 samp2 inst2
11    b4       11 samp2 inst2
12    c4       12 samp2 inst2
df <- Reduce(rbind, dflist)
split(df, df$Samp)
$samp1
  Reads Mean_Val  Samp  Inst
1    a1        1 samp1 inst1
2    b1        2 samp1 inst1
3    c1        3 samp1 inst1
4    a2        4 samp1 inst2
5    b2        5 samp1 inst2
6    c2        6 samp1 inst2

$samp2
   Reads Mean_Val  Samp  Inst
7     a3        7 samp2 inst1
8     b3        8 samp2 inst1
9     c3        9 samp2 inst1
10    a4       10 samp2 inst2
11    b4       11 samp2 inst2
12    c4       12 samp2 inst2