R 从两个列表中选择一个,将第二个列表值放在第一个列表的下面

R 从两个列表中选择一个,将第二个列表值放在第一个列表的下面,r,R,例如,我有两个列表: a = c(2, 3, 5) b = c("aa", "bb", "cc") c = c(TRUE, FALSE, TRUE) df = data.frame(a, b, c) df1=split(df, df$b) 及 我想要一个组合的df1和df3列表,如下所示: $aa a b c 1 2 aa TRUE 4 1 aa TRUE $bb a b c 2 3 bb FALSE 5 2 bb FALSE $cc a b c

例如,我有两个列表:

a = c(2, 3, 5) 
b = c("aa", "bb", "cc") 
c = c(TRUE, FALSE, TRUE) 
df = data.frame(a, b, c)
df1=split(df, df$b)

我想要一个组合的df1和df3列表,如下所示:

$aa
  a  b    c
1 2 aa TRUE
4 1 aa TRUE

$bb
  a  b     c
2 3 bb FALSE
5 2 bb FALSE

$cc
  a  b    c
3 5 cc TRUE
6 3 cc TRUE
这完全是示例数据

在新列表中,df1值必须高于df3值

我通过列表预测数据,我的时间序列列表和预测列表分为两个列表,所以我想将它们组合在一起,在下面添加预测值。

为什么不简单呢

Map(rbind, df1, df3)

$aa
a  b    c
1 2 aa TRUE
4 1 aa TRUE

$bb
  a  b     c
2 3 bb FALSE
5 2 bb FALSE

$cc
  a  b    c
3 5 cc TRUE
6 3 cc TRUE
n = c(2, 3, 5, 2, 3, 5) 
s = c("aa", "bb", "cc") 
b = c(TRUE, FALSE, TRUE,TRUE, FALSE, TRUE) 
df = data.frame(n, s, b)
df1=split(df, df$s)

a = c(1, 2, 3) 
c = c("aa", "bb", "cc") 
d = c(TRUE, FALSE, TRUE) 
df2 = data.frame(a, c, d)
df3=split(df2, df2$c)

g = c(n,a) 
h = c("aa", "bb", "cc") 
k = c(b,d)
df4 = data.frame(g, h, k)
df5=split(df4, df4$h)

输入是
df1
df3
,输出是
df5
?是的,从list-df1和list-df3我想要组合列表df5。很抱歉,没有具体说明,但df5列表必须从df1和df3创建,而不设置名称,因为实际文件太大,您无法设置名称。您所需的输出具有其他地方未提及的名称“g”、“h”和“k”。和
df1
df3
有不同的名称,因此不重命名就不能绑定在一起,除非将它们转换为矩阵,否则性能会差得多。您可以使用
矢量化(data.table::setnames,“x”,SIMPLIFY=F)(df1,c(“g”,“h”,“k”)
(在
df3
上也是如此)通过引用重命名源表,然后只需执行
Map(rbind,df1,df3)
。我怀疑这个集合名在性能方面会有问题。通过您编辑的问题,解决方案变得非常紧凑:)
n = c(2, 3, 5, 2, 3, 5) 
s = c("aa", "bb", "cc") 
b = c(TRUE, FALSE, TRUE,TRUE, FALSE, TRUE) 
df = data.frame(n, s, b)
df1=split(df, df$s)

a = c(1, 2, 3) 
c = c("aa", "bb", "cc") 
d = c(TRUE, FALSE, TRUE) 
df2 = data.frame(a, c, d)
df3=split(df2, df2$c)

g = c(n,a) 
h = c("aa", "bb", "cc") 
k = c(b,d)
df4 = data.frame(g, h, k)
df5=split(df4, df4$h)