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)