当前位置: 首页 > 知识库问答 >
问题:

源代码。调用函数[重复]

贲言
2023-03-14

我在R中查看cov的source_code,遇到了一段我不太理解的代码。

协方差的数学定义在这里。

if (method == "pearson") 
    .Call(C_cov, x, y, na.method, method == "kendall")
else if ...
CallExternal {base} R Documentation
Modern Interfaces to C/C++ code
Description
Functions to pass R objects to compiled C/C++ code that has been loaded into R.

共有1个答案

冀鸿才
2023-03-14

.call用于将变量传递给C例程。c_cov是一个变量(在stats命名空间中,我们很快就会看到),它告诉.call在哪里找到它应该用来计算协方差的例程。

如果在命令行键入c_cov,您将得到

Error: object 'C_cov' not found

那是因为它对你隐瞒了。你得做点侦探工作。

getAnywhere('C_cov')
# 4 differing objects matching ‘C_cov’ were found
# in the following places
#   namespace:stats
# Use [] to view one of them
stats::C_cov
# Error: 'C_cov' is not an exported object from 'namespace:stats'
stats:::C_cov # use three colons to get unexported variables.
# $name
# [1] "cov"
# # blah, blah, blah ...
# $dll
# DLL name: stats
# Filename: C:/Program Files/R/R-3.0.1/library/stats/libs/x64/stats.dll
# Dynamic lookup: FALSE
# # blah, blah, ...

这就是我们想要的信息。它告诉我们例程的名称和它所在的库。现在我们只需要进入C源代码并遵循以下步骤:.../src/library/stats/src/cov.C

 类似资料:
  • 我可以使用或查看源代码,但我没有显示princomp的代码。这个函数(或其他东西)是用R或其他字节码编写的吗。我也无法使用“如何在包中显示S4函数的源代码?”中的“建议”找到源代码?。谢谢你的帮助。

  • 问题内容: 我有一个C函数,我想从C 调用。我无法使用“ ”这样的方法,因为C函数无法使用g 进行编译。但是使用gcc可以很好地编译。有什么想法如何从C ++调用函数吗? 问题答案: 像这样编译C代码: 然后是这样的C ++代码: 然后使用C ++链接器将它们链接在一起: 当您包含C函数的声明时,还必须告诉C ++编译器C头即将到来。因此开始于: 应该包含以下内容: (在此示例中,我使用了gcc,

  • 问题内容: 我想从JavaScript代码中调用Python函数,因为JavaScript中没有其他方法可以做我想做的事情。这可能吗?您可以调整以下代码段使其正常工作吗? JavaScript代码: 包含使用高级库编写的函数,这些函数在JavaScript中没有易写的等效项: 问题答案: 您需要做的就是向您的pythoncode发出ajax请求。您可以使用jquery 进行此操作,也可以仅使用ja

  • Lua 里面的函数必须放在调用的代码之前,下面的代码是一个常见的错误: -- test.lua 文件 local i = 100 i = add_one(i) function add_one(i) return i + 1 end 我们将得到如下错误: # luajit test.lua luajit: test.lua:2: attempt to call global 'add_o

  • 问题内容: 通过使用Java Scripting API,我能够在Java中执行JavaScript。但是,有人可以解释一下我需要添加到此代码中以便能够调用C:/Scripts/Jsfunctions.js中的函数吗? 问题答案: 使用读剧本

  • 通过使用Java脚本API,我能够在Java中执行JavaScript。但是,有人能解释一下,为了能够调用C:/scripts/jsfunctions.js中的函数,我需要在这段代码中添加什么内容吗