我理解来自以下代码的.Fortran
调用Fortran子例程,但为什么我们在这里使用C_
子例程名?我在互联网上查看的其他几个子例程调用示例只是"stl"
,有人可以帮我解释为什么C_stl
而不是stl
吗?
z <- .Fortran(C_stl, x, n,
as.integer(period),
as.integer(s.window),
as.integer(t.window),
as.integer(l.window),
s.degree, t.degree, l.degree,
nsjump = as.integer(s.jump),
ntjump = as.integer(t.jump),
nljump = as.integer(l.jump),
ni = as.integer(inner),
no = as.integer(outer),
weights = double(n),
seasonal = double(n),
trend = double(n),
double((n+2*period)*5))
答案 0 :(得分:1)
经过大量的搜索,我相信我找到了答案。查看目录<path to R sources>/src/library/stats
中的NAMESPACE文件。
您会看到所有C / Fortran例程都使用前缀为C_
的名称引用,这似乎是由useDynLib
完成的。
答案 1 :(得分:1)
C_stl
是stats
包中的一个对象,包含有关Fortran子例程的辅助信息。它未导出,因此要查看它,您必须输入stats:::C_stl
。
> stats:::C_stl
$name
[1] "stl"
$address
<pointer: 0x000000000f87b950>
attr(,"class")
[1] "RegisteredNativeSymbol"
$dll
DLL name: stats
Filename: E:/apps/R/R-3.1.1/library/stats/libs/x64/stats.dll
Dynamic lookup: FALSE
$numParameters
[1] 18
attr(,"class")
[1] "FortranRoutine" "NativeSymbolInfo"