如何使用R调用c代码的主要功能?

时间:2017-08-29 20:10:51

标签: c r r-package

我试图创建一个使用此代码的R包: c code

我搜索了如何做到并尝试了以下方法:

1 - 使用内联包。

# orderer ####

#' Orderer
#'
#' @export

orderer <- function(associationPreprocessed){
  if(!is.character(associationPreprocessed)){
    stop("Error, the argument 'associationPreprocessed' must be of type 'character'")
  }
  code <- paste0(readLines("src/cfm-seriation.c"), collapse = "\n")
  cfm <- inline::cfunction(signature(argc = "integer", argv = "character"),
                           body = code,
                           language = "C", convention = ".C",
                           libargs = c("-lm", "-lpthread", "-lrt"),
                           includes = c("#include <stdio.h>", "#include <time.h>",
                                        "#include <math.h>", "#include <stdlib.h>",
                                        "#include <string.h>"))
  cfm(1L, paste0("f=", associationPreprocessed))
  return (NULL)
}

我删除了c代码的所有标头信息以使用此代码段。

我们的想法是使用参数associationPreprocessed传递数据的路径Escherichia coli

2 - 使用.C()函数调用mainuseDynLib(pkg)动态加载.so lib。与this thread的例子类似。

我相信我已经接近使用inline::cfuntion()达到我的预期,但我仍然没有想出如何做我想做的事。

我见过的所有示例都使用简单的c代码,只有一个函数。

0 个答案:

没有答案