У меня есть фрейм данных, включая столбец списка.Я хочу отфильтровать этот (вложенный) столбец списка (data
, содержащий фрейм данных) по содержащемуся в нем столбцу unit
со значениями, содержащимися в другом списке (x
).Я думаю, что я довольно близок, проблема в том, что мне не удается «преобразовать» список x
в вектор для оператора фильтра.Отлично подходит для любой подсказки!
library(tidyverse)
фрейм данных:
df<- structure(list(data = list(structure(list(unit = c("A1", "A2"
), value = c("10", "10")), class = c("tbl_df", "tbl", "data.frame"
), .Names = c("unit", "value"), row.names = c(NA, -2L)), structure(list(
unit = c("B1", "B2", "A1"), value = c("10", "10", "10")), class = c("tbl_df",
"tbl", "data.frame"), .Names = c("unit", "value"), row.names = c(NA,
-3L)), structure(list(unit = c("C1", "B2"), value = c("10", "10"
)), class = c("tbl_df", "tbl", "data.frame"), .Names = c("unit",
"value"), row.names = c(NA, -2L))), x = list(c("A1", "A2"), c("B1",
"B2"), "C1")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-3L), .Names = c("data", "x"))
Это работает, только если x
имеет только один элемент:
df1 <- df %>%
mutate(y=map(data, ~filter(., unit %in% x)))
flatten_chr
создает вектор, включающий значения, содержащиеся в x
всех (!) строк, а не для списка в строке.
df1 <- df %>%
mutate(y=map(data, ~filter(., unit %in% flatten_chr(x))))
Похоже, что критические проблемы заключаются в том, как преобразовать x
в вектор встроки. * * тысяча двадцать-один