Вы можете использовать lapply
следующим образом или цикл for
, как показано ниже
lapply
names(list2) <- c("df_nameA", "df_nameB")
lapply(names(list2), function(x) list2[[x]][list2[[x]]$nrow %in% list1[[x]], ])
# [[1]]
# nrow col1. col.3
# 3 3 c B1
# 4 4 d B2
# 6 6 f C2
#
# [[2]]
# nrow col1. col.3
# 1 1 g D1
# 2 2 h D2
# 4 4 l E2
for-loop
names(list2) <- c("df_nameA", "df_nameB")
for (x in names(list2)) {
list2[[x]] <- list2[[x]][list2[[x]]$nrow %in% list1[[x]], ]
}
list2
# $`df_nameA`
# nrow col1. col.3
# 3 3 c B1
# 4 4 d B2
# 6 6 f C2
#
# $df_nameB
# nrow col1. col.3
# 1 1 g D1
# 2 2 h D2
# 4 4 l E2
Данные
Данные в воспроизводимом формате:
list1 <- list(df_nameA = c(3, 4, 6),
df_nameB = c(1, 2, 4))
list2 <- list(data.frame(nrow = c(1, 2, 3, 4, 5, 6),
col1. = c("a.", "b.", "c", "d", "e", "f"),
col.3 = c("A1", "A2", "B1", "B2", "C1", "C2")),
data.frame(nrow = c(1, 2, 3, 4, 5, 6),
col1. = c("g", "h", "i", "l", "m", "n"),
col.3 = c("D1", "D2", "E1", "E2", "F1", "F2")))