dplyr semi_join 错误:`x`和`y`必须共享相同的src,设置`copy` = TRUE(可能很慢)

Ali*_*ili 15 r semi-join dplyr

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

AllCustomersList <- loadAllCustomersData()

CouldJoinByNationalID <- matchCustomersByNationalCode(AllCustomersList = AllCustomersList)
Run Code Online (Sandbox Code Playgroud)

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()
}
Run Code Online (Sandbox Code Playgroud)

实际上,这只是 semi_join 的包装,就命名而言。但它出现了一个错误:

错误:x并且y必须共享相同的src,set copy= TRUE(可能会很慢)。

运行rlang::last_error()看看哪里出错了。

调用自:signal_abort(cnd)

有人可以帮忙吗?

Ali*_*ili 4

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

  • 如果您花时间写下整个代码,以便其他人能够自己完全重新运行该代码,而不必猜测您到底要得到什么,那就太好了。 (15认同)