【发布时间】:2022-07-26 21:39:40
【问题描述】:
我有 2 个数据框正在尝试使用 modifylist。但是,modifylist 只接受一个命名列表。在我的数据中,我有命名的“原始 - list_A”和我想要合并到 list_A 的“新 - list_B”。
-
如果
list_A包含"Error" thenlist_Bwill contain the correct data, however, the lists are different sizes. (List_B修改列表(list_A, list_B)
不会修改列表,因为list_B 没有列表名称。
为了说明这一点;
list_C = list_B
names(list_C) = names(list_A)[1:6]
modifyList(list_A, list_C)
但这不起作用。
我想要做的是将 2 个列表合并在一起,给我一个大小为 7 的列表(就像在 list_A 中一样,但这次填充了 elm4 和 elm6 以包含找到的数据框在list_B。
最终列表应该只包含数据框。
数据:
# Named list
list_A = list(
elm1 = data.frame(a = c("A1", "A2", "A3"), b = c("B1", "B2", "B3"), c = c("C1", "C2", "C3")),
elm2 = data.frame(a = c("A11", "A22", "A33"), b = c("B11", "B22", "B33"), c = c("C11", "C22", "C33")),
elm3 = data.frame(a = c("A111", "A222", "A333"), b = c("B111", "B222", "B333"), c = c("C111", "C222", "C333")),
elm4 = as.character("Error"),
elm5 = data.frame(a = c("A11111", "A22222", "A33333"), b = c("B11111", "B22222", "B33333"), c = c("C11111", "C22222", "C33333")),
elm6 = as.character("Error"),
elm7 = data.frame(a = c("A1111111", "A2222222", "A3333333"), b = c("B1111111", "B2222222", "B3333333"), c = c("C1111111", "C2222222", "C3333333"))
)
# Unnamed list of different length
list_B = list(
NULL,
NULL,
NULL,
data.frame(a = c("A1111", "A2222", "A3333"), b = c("B1111", "B2222", "B3333"), c = c("C1111", "C2222", "C3333")), # elm4
NULL,
data.frame(a = c("A111111", "A222222", "A333333"), b = c("B111111", "B222222", "B333333"), c = c("C111111", "C222222", "C333333")) # elm6
# elm7 is missing since the list ends at the last data.frame in this list
)
预期输出:
$elm1
a b c
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
$elm2
a b c
1 A11 B11 C11
2 A22 B22 C22
3 A33 B33 C33
$elm3
a b c
1 A111 B111 C111
2 A222 B222 C222
3 A333 B333 C333
$elm4
a b c
1 A1111 B1111 C1111
2 A2222 B2222 C2222
3 A3333 B3333 C3333
$elm5
a b c
1 A11111 B11111 C11111
2 A22222 B22222 C22222
3 A33333 B33333 C33333
$elm6
a b c
1 A111111 B111111 C111111
2 A222222 B222222 C222222
3 A333333 B333333 C333333
$elm7
a b c
1 A1111111 B1111111 C1111111
2 A2222222 B2222222 C2222222
3 A3333333 B3333333 C3333333
或
list(
elm1 = data.frame(a = c("A1", "A2", "A3"), b = c("B1", "B2", "B3"), c = c("C1", "C2", "C3")),
elm2 = data.frame(a = c("A11", "A22", "A33"), b = c("B11", "B22", "B33"), c = c("C11", "C22", "C33")),
elm3 = data.frame(a = c("A111", "A222", "A333"), b = c("B111", "B222", "B333"), c = c("C111", "C222", "C333")),
elm4 = data.frame(a = c("A1111", "A2222", "A3333"), b = c("B1111", "B2222", "B3333"), c = c("C1111", "C2222", "C3333")), # elm4
#elm4 = as.character("Error"),
elm5 = data.frame(a = c("A11111", "A22222", "A33333"), b = c("B11111", "B22222", "B33333"), c = c("C11111", "C22222", "C33333")),
elm6 = data.frame(a = c("A111111", "A222222", "A333333"), b = c("B111111", "B222222", "B333333"), c = c("C111111", "C222222", "C333333")), # elm6
#elm6 = as.character("Error"),
elm7 = data.frame(a = c("A1111111", "A2222222", "A3333333"), b = c("B1111111", "B2222222", "B3333333"), c = c("C1111111", "C2222222", "C3333333"))
)
【问题讨论】: