Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R和C库/BLAS/OSX之间的接口_C_R_Macos - Fatal编程技术网

R和C库/BLAS/OSX之间的接口

R和C库/BLAS/OSX之间的接口,c,r,macos,C,R,Macos,我正在编写一些C程序(我是C的初学者),我从R编译和调用这些程序。为了尽可能地提高效率,我尝试使用Lapack和BLAS中尽可能多的函数(它们包含执行基本操作的高度优化的例程) 我编译我的.c代码时,经典的做法是: system ('R CMD SHLIB blablabla.c') 以下是我的平均.c代码的“前言”: #include <math.h> #include <stdio.h> #include <string.h> #include <

我正在编写一些C程序(我是C的初学者),我从R编译和调用这些程序。为了尽可能地提高效率,我尝试使用Lapack和BLAS中尽可能多的函数(它们包含执行基本操作的高度优化的例程)

我编译我的.c代码时,经典的做法是:

system ('R CMD SHLIB blablabla.c')
以下是我的平均.c代码的“前言”:

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <R_ext/blas.h>
#include <R_ext/Lapack.h>
#包括
#包括
#包括
#包括
#包括
#包括
这是我的“虚拟”问题:我需要计算“实向量的argmin”,即向量最小分量的索引(实际上,对于大向量和很多次,因此我真的喜欢使用优化例程,而不是基本的“for”循环)。 “不幸的是”,在“R_ext/blas.h”中,函数IDMIN没有出现(“R_ext/blas.h”只包含函数IDAMAX,该函数返回最大绝对值分量的索引)

在R中,这样的任务很容易通过“which.min()”(我猜,这是基于优化的代码)实现的,所以我猜它应该“在某个地方”存在实现此任务的C代码(当然是基于FORTRAN代码),而这正是我需要的

换句话说:我应该在“.c preamble”中添加什么库?我应该使用什么样的c函数才能在我的c代码中使用“optimized which.min()”(我从R编译和调用的代码)

另一个问题:在MacOSX上,如何将一些C库添加到现有的R的C库中(仍然是为了从R编译和使用C,这在我看来非常方便)


谢谢

在艾根或犰狳身上可能有这样的东西。既然我建议无论如何都要使用Rcpp,那么您应该查看它们并使用RcppEigen或RcppArmadillo.Agreed。我99%肯定这已经在RcppEigen了。是的,是的。有了(Rcpp)犰狳,你可以免费得到拉帕克(正如它所派遣的),而(Rcpp)艾根有它自己的替代品。你真的应该使用RCPP*家族,因为它让你的生活变得更容易---如果你愿意,你仍然可以在里面写C(尽管我认为这是误导的:)谢谢你的建议(我不确定真的理解,但这是另一个问题;-)。实际上,我对Lapack没有任何问题,我的问题是R_ext/blas.h不包含R中的等价物,而R中的.min(。。。那么,R是如何进行的呢?在艾根或犰狳身上可能有这样的东西。既然我建议无论如何都要使用Rcpp,那么您应该查看它们并使用RcppEigen或RcppArmadillo.Agreed。我99%肯定这已经在RcppEigen了。是的,是的。有了(Rcpp)犰狳,你可以免费得到拉帕克(正如它所派遣的),而(Rcpp)艾根有它自己的替代品。你真的应该使用RCPP*家族,因为它让你的生活变得更容易---如果你愿意,你仍然可以在里面写C(尽管我认为这是误导的:)谢谢你的建议(我不确定真的理解,但这是另一个问题;-)。实际上,我对Lapack没有任何问题,我的问题是R_ext/blas.h不包含R中的等价物,而R中的.min(。。。那么,R是如何进行的呢?