R的统计资料库中的acf
函数包含
.Call(C_acf, x, lag.max, type == "correlation")
但我在我的机器上找不到文件C_acf
(https://github.com/SurajGupta/r-source也https://github.com/wch/r-source}。
在这些问题上应用建议没有帮助:
How to see the source code of R .Internal or .Primitive function?
该文件似乎不是人们所说的任何地方。我怎样才能找到C_acf?
答案 0 :(得分:3)
此方法将帮助识别已编译函数的源代码,该函数具有CallRoutine
或NativeSymbolInfo
类。
找到调用例程的命名空间
getAnywhere(C_acf)
# namespace:stats
下载您的基本R版本,因为统计数据是基础R的一部分。
download.file(url = "https://cran.r-project.org/src/base/R-3/R-3.0.0.tar.gz", destfile = "./R-3.0.0.tar.gz")
untar(tarfile = "./R-3.0.0.tar.gz", exdir = "./")
处理目录路径
old_dir <- getwd()
setwd("./R-3.0.0/src/library/stats/src/")
在源文件中找到单词acf
。您必须浏览结果列表并确定确切的功能。最简单的方法是查看函数名称及其参数。
myresults <- sapply( list.files("./"), function(x) grep("acf", readLines(x), value = TRUE))
myresults <- myresults[lengths(myresults) != 0]
myresults[2]
# $filter.c
# [1] "acf0(double *x, int n, int ns, int nl, int correlation, double *acf)"
# [2] "\t\tacf[lag + d1*u + d2*v] = (nu > 0) ? sum/(nu + lag) : NA_REAL;"
# [3] "\t se[u] = sqrt(acf[0 + d1*u + d2*u]);"
# [4] "\t\tacf[0 + d1*u + d2*u] = 1.0;"
# [5] "\t\t\tacf[lag + d1*u + d2*v] /= se[u]*se[v];"
# [6] "SEXP acf(SEXP x, SEXP lmax, SEXP sCor)"
# [7] " acf0(REAL(x), nx, ns, lagmax, cor, REAL(ans));"
重置旧目录路径
setwd(old_dir)
<强>参考:强>