我有这样的DFS

df1 <- data.frame(ID=c(222717,321817,521917), Name=c("Bob","James","Eric"), Team=c("Badgers","Tigers","Possums"))
df2 <- data.frame(Badgers=c(222717,789423), Tigers=c(438283,978748), Possums=c(521917,251233))

我使用mApply在df2中相应的Team列中判断来自df1的ID,如下所示

df1$result <- mapply(function(a,b) {b %in% df2[[a]]}, a=as.character(df1$Team), b=df1$ID)

我的问题是,我现在有了新的df1,它有可变数量的ID列要查找,如下所示

newDf1 <- data.frame(ID1=c(222717,321817,521917), ID2=c(13998,978748,251233), Name=c("Bob","James","Eric"), Team=c("Badgers","Tigers","Possums"))

我曾try 在我的mapply中使用grep,但它不能正常工作:

newDf1$result <- mapply(function(a,b) {b %in% df2[[a]]}, a=as.character(newDf1$Team), b=newDf1[grep("ID",names(newDf1))])

在这种情况下,如何开始判断多个值?请注意,如上所述,ID列的数量是可变的,因此,尽管以下内容适用于我提供的示例newDf1(它只有两个ID列),但我需要适用于任意数量的ID列的内容.

newDf1$result <- mapply(function(a,b,c) {b %in% df2[[a]] | c %in% df2[[a]]}, a=as.character(newDf1$Team), b=newDf1$ID1, c=newDf1$ID2)

推荐答案

我们可以用rowwise美元

library(dplyr)
newDf1 %>%
   rowwise %>%
   mutate(result = any(c_across(starts_with("ID")) %in% df2[[Team]])) %>% 
   ungroup

base R分钟内

newDf1$result <- sapply(seq_len(nrow(newDf1)), \(i) 
  any(newDf1[i, grep("ID", names(newDf1))] %in% df2[[newDf1$Team[i]]]))

R相关问答推荐

名称输出pmap on tible

任意列的欧几里得距离

在使用ggroove后,将图例合并在gplot中

然后根据不同的列值有条件地执行函数

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

如何得到每四个元素向量R?

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

仅在Facet_WRAP()中的相应方面包含geom_abline()

函数可以跨多个列搜索多个字符串并创建二进制输出变量

如何将一列中的值拆分到R中各自的列中

手动指定从相同数据创建的叠加图的 colored颜色

使用ifElse语句在ggploy中设置aes y值

变异以按组从其他列创建具有最大和最小值的新列

网络抓取NBA.com

带有Bootswatch Cerulean主题的shiny 仪表板中的浏览&按钮可见性问题

reshape 数据帧-基于组将行转换为列

GgHighlight找不到它创建的列:`Highlight..1`->;`Highlight.....`

删除列表中的奇数长度元素

匹配名字相似的人:r