首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R源代码.Call函数

R源代码.Call函数
EN

Stack Overflow用户
提问于 2013-10-28 00:21:26
回答 1查看 3.4K关注 0票数 12

我看了R中cov的source_code,遇到了我不太明白的一段代码。

协方差goes的数学定义。

代码语言:javascript
复制
if (method == "pearson") 
    .Call(C_cov, x, y, na.method, method == "kendall")
else if ...

帮助手册提供了一些关于.Call函数的内容:

代码语言:javascript
复制
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.

我想知道在哪里可以找到如何计算协方差的源代码,无论是C++还是C或者其他什么。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-28 00:56:39

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

如果在命令行输入C_cov,您将得到

代码语言:javascript
复制
Error: object 'C_cov' not found

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

代码语言:javascript
复制
getAnywhere('C_cov')
# 4 differing objects matching ‘C_cov’ were found
# in the following places
#   namespace:stats
# Use [] to view one of them

这告诉我们,在C_cov名称空间中有一个名为stats的变量(您的输出可能与此略有不同)。让我们试着得到它。

代码语言:javascript
复制
stats::C_cov
# Error: 'C_cov' is not an exported object from 'namespace:stats'

显然,C_cov不适合公众消费。没关系,无论如何我们都可以得到它:

代码语言:javascript
复制
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

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19625372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档