这是我找到的内容。 这篇 指南引领我们到 names.c ,在那里我们看到
{"unique", do_duplicated, 1, 11, 4, {PP_FUNCALL, PREC_FN, 0}},
之后我们转到unique.c并找到一个条目
SEXP attribute_hidden do_duplicated(SEXP call, SEXP op, SEXP args, SEXP env)
浏览代码时,我们偶然发现
dup = duplicated3(x, incomp, fL, nmax);
这是一个指向
static SEXP duplicated3(SEXP x, SEXP incomp, Rboolean from_last, int nmax)
最后,这里的主循环是:
for (i = 0; i < n; i++) {
// if ((i+1) % NINTERRUPT == 0) R_CheckUserInterrupt();
v[i] = isDuplicated(x, i, &data);
}
所以我的问题的答案是是。
methods(unique)
。具体来说是unique.data.frame
,unique.matrix
。 - RJ-