3

我正在使用 dplyr 1.0.6 和 R 4.1.0,我编写了 2 个函数,如下所示:

AllCustomersList <- loadAllCustomersData()

CouldJoinByNationalID <- matchCustomersByNationalCode(AllCustomersList = AllCustomersList)

loadAllCustomersData() 返回两个数据框的列表,然后 matchCustomersByNationalCode 尝试在这两个 data.frame 上执行 semi_join,如下所示:

matchCustomersByNationalCode <- function(AllCustomersList) {
  
  FDCustomers <- AllCustomersList$FDCustomers
  Customers <- AllCustomersList$Customers
  
  semi_join(x = FDCustomers, y = Customers, by = c("NationalID" = "NationalCode"), na_matches = "never") %>% 
    pull(NationalID) %>% 
    return()
}

实际上,这只是 semi_join 命名的一个包装器。但它通过一个错误说:

错误:x并且y必须共享同一个 src,设置copy= TRUE(可能很慢)。

运行rlang::last_error()以查看错误发生的位置。

调用自:signal_abort(cnd)

有人可以帮忙吗?

4

1 回答 1

1

感谢walterMartin Gal,我尝试制作一个可重现的示例,并且成功了!所以我检查了两个data.frames的类,它说它们都是data.frames。但是我在 match 函数中再次将它们转换为 data.frame 并且它起作用了!这对我来说仍然很奇怪,但问题解决了!

于 2021-07-28T08:27:42.097 回答