Dear Ivan,

thanks a lot, that is helpful.

Still, I feel that default partial matching cripples the functionality
of data.frame for larger tables.

Thanks again and best regards

Hilmar

On 12.12.23 13:55, Ivan Krylov wrote:
В Mon, 11 Dec 2023 21:11:48 +0100
Hilmar Berger via R-devel <r-devel@r-project.org> пишет:

What was unexpected is that in this case was that [.data.frame was
hanging for a long time (I waited about 10 minutes and then restarted
R). Also, this cannot be interrupted in interactive mode.
That's unfortunate. If an operation takes a long time, it ought to be
interruptible. Here's a patch that passes make check-devel:

--- src/main/unique.c   (revision 85667)
+++ src/main/unique.c   (working copy)
@@ -1631,6 +1631,7 @@
        }
      }

+    unsigned int ic = 9999;
      if(nexact < n_input) {
        /* Second pass, partial matching */
        for (R_xlen_t i = 0; i < n_input; i++) {
@@ -1642,6 +1643,10 @@
            mtch = 0;
            mtch_count = 0;
            for (int j = 0; j < n_target; j++) {
+               if (!--ic) {
+                   R_CheckUserInterrupt();
+                   ic = 9999;
+               }
                if (no_dups && used[j]) continue;
                if (strncmp(ss, tar[j], temp) == 0) {
                    mtch = j + 1;


______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to