CallExternal
位於 base
包(package)。 說明
要傳遞的函數R已編譯的 C/C++ 代碼的對象已加載到R.
用法
.Call(.NAME, ..., PACKAGE)
.External(.NAME, ..., PACKAGE)
參數
.NAME |
給出 C 函數名稱的字符串,或引用此類名稱的 |
... |
要傳遞給編譯代碼的參數。 |
PACKAGE |
如果提供,則限製對字符串的搜索 該參數遵循 這是為了增加包的安全性,通過使用這個參數可以確保沒有其他包可以覆蓋它們的外部符號,並且還可以加快搜索速度(請參閱“注意”)。 |
細節
這些函數用於調用使用內部函數的編譯代碼R對象,將參數作為序列傳遞給代碼R對象。它們采用 C 調用約定,因此通常也可用於 C++ 代碼。
有關如何編寫與這些函數一起使用的代碼的詳細信息,請參閱“編寫 R 擴展”手冊中的“係統和外語接口”一章。它們的不同之處在於參數傳遞給 C 代碼的方式:.External
允許可變或無限數量的參數。
這些函數是 primitive ,並且 .NAME
始終與提供的第一個參數(不應命名)匹配。為了清楚起見,請避免在傳遞給 ...
的參數中使用與 .NAME
匹配或部分匹配的名稱。
值
一個R在編譯代碼中構造的對象。
外部代碼的頭文件
編寫與這些函數一起使用的代碼將需要使用內部R‘中定義的結構Rinternals.h'和/或'中的宏Rdefines.h’。
注意
如果要頻繁使用這些函數之一,請指定 PACKAGE
(將搜索限製為單個 DLL)或將 .NAME
作為本機符號對象之一傳遞。搜索符號可能需要很長時間,尤其是在加載許多命名空間時。
你可能會看到PACKAGE = "base"
對於鏈接到的符號R。不要在您自己的代碼中使用此符號:此類符號不是 API 的一部分,可能會在沒有警告的情況下進行更改。
PACKAGE = ""
曾經被接受(但未記錄):現在它是一個錯誤。
參考
Chambers, J. M. (1998)
Programming with Data. A Guide to the S Language.
Springer. (.Call
.)
也可以看看
“編寫 R 擴展”手冊。
相關用法
- R Colon 冒號運算符
- R Constants 內置常量
- R Control 控製流
- R Comparison 關係運算符
- R Cstack_info 報告有關 C 堆棧大小和使用情況的信息
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
- R noquote “無引號”字符串打印類
- R warning 警告信息
- R rapply 遞歸地將函數應用於列表
- R basename 操作文件路徑
- R with 評估數據環境中的表達式
- R formals 訪問和操縱形式參數
- R icuSetCollate 按 ICU 設置整理
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Modern Interfaces to C/C++ code。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。