【发布时间】:2020-11-10 16:49:00
【问题描述】:
我无法使用 %in% 将列表传递给 dplyr 的 filter() 函数,我不知道为什么它不起作用。
我重现了以下问题:
我有两个数据集,x 和 y。
x 是一组原始 ID (O_ID) 和目标 ID (D_ID)。x 中的单个O_ID 可以与多个D_ID's 关联。
y 是D_IDs 的一组系数。
我想获取与特定O_ID 关联的所有D_IDs,并获取与该D_ID 相关联的系数表。在下面的示例中,这意味着我想返回仅包含 gt 和 st 行的 y 集。
示例代码
library(tidyverse)
# setup sample x dataframe
x <- data.frame("O_ID" = c("A1","A1","A2","B1","B1","B2"),
"D_ID" = c("gt","st","hy","kl","st","nu"))
# setup sample y dataframe
y <- data.frame("ID" = c("gt","st","hy"),
"coef_1" = c(2.6,1.8,6.7),
"coef_2" = c(5.6,2.1,3.6))
# get D_ID's associated with O_ID == "A1"
x_A1 <- x %>%
filter(O_ID == "A1") %>%
select(D_ID) %>%
as.list()
# FAILED STEP:
# get table of coefficients for D_IDs
y_A1 <- y %>%
filter(ID %in% x_A1)
为什么我的最后一步不起作用?列表是传递信息的正确格式吗?
【问题讨论】: