以下,$RHOME都是指代你安装R地址的目次。
R的设置文件,在$RHOME/etc下
Renviron:情况变量与路径设置,多半可顾名思义,主要先容以下两个。
R_LIBS_SITE: 包搜索路径,在R呼吁行下可用.libPaths()显示,;
R_LIBS_USER: 用户包目次,假如配置为”~/Rlibs/”,则每个用户在没有全局安装权限时,默认地会把包安装到~/Rlibs/下,无需添加到R_LIBS_SITE也能被搜索到,但在R呼吁行下用.libPaths()不会显示该路径,这样每个用户可以拥有一个本身当地的R库;
假如想设置一个当地测试情况,以便与出产情况区分隔,可以在安装包时指定一个路径,如R CMD INSTALL testR.tar.gz -l ~/Rtest 可以把testR包安装到~/Rtest下,写测试文件时第一行加上.libPath(‘~/Rtest’),就可以正确找到testR包了。
ldpaths:动态库载入路径设置。
R_LD_LIBRARY_PATH:R 包载入时动态库搜索路径,默认为${R_LD_LIBRARY_PATH=${R_HOME}/lib:},假如要加上/usr/local/lib,则 变为${R_LD_LIBRARY_PATH=${R_HOME}/lib:/usr/local/lib:}
Makeconf:包编译链接设置,雷同于Makefile,可被用户引用或重载。在R CMD INSTALL/build时利用。
假如利用Makevars文件,则把该文件放到包的src目次下,文件中的设置可利用并扩展Makeconf的设置。
例 子:在Makevars中界说PKG_LIBS = -L/usr/local/lib -lmylibs $(LAPACK_LIBS) $(BLAS_LIBS),个中$(LAPACK_LIBS)与$(BLAS_LIBS)是Makeconf中预界说的变量,这里界说的PKG_LIBS变量会被Makeconf中的ALL_LIBS变量所利用,作为链接参数的一部门。
repositories:cran站点。
R的头文件在$RHOME/include,对付用C写R扩展这个应用场景来说,有用的是R.h,Rdefines.h和Rinternals.h这几个文件。
R.h是每一个为R作接口的C扩展里必需包括的。
Rinternals.h是最焦点的界说文件,它界说了最根基也是的R布局SEXP(详见这里)及其它的一些数据范例与布局、常量、以及所有你会用获得的接口函数。
Rdefines.h中include了Rinternals.h,而且为了利便利用,界说了一大批的宏,对Rinternals.h中的函数举办了封装,固然还不是完全的封装,但已经很够用,语义上也好领略得多。
Rdefines.h中一些常用的R扩展函数,让你可以在C里操纵R的数据布局,以下的函数参数x的范例都是SEXP,n为int型变量:
AS_XXX:范例转换,等同于R中的as()函数。如AS_INTEGER(x)把x转换为INTEGER类。雷同的尚有IS_XXX,等同于R中的is()函数。
NEW_XXX:生成一个向量工具,如NEW_INTEGER(n)生成一个长度为n的向量,SEXP范例。通过NEW_OBJECT(MAKE_CLASS(“classname”))可生成任意一个类的工具。
XXX_POINTER:取得SEXP向量工具数据的指针,如INTEGER_POINTER(x)返回指向x的数据的指针,接下来可以在C里自由操纵。
mkString:较量轻便地生成一个字符串型SEXP工具的要领,如mkString(“xyz”)。
GET_ATTR, SET_ATTR, GET_SLOT, SET_SLOT:获取/配置工具属性,获取/配置工具SLOT,可参考文件中的界说。
allocVector, allocMatrix:生成一个向量/矩阵,在Rinternals.h中界说。
NEW_LIST, SET_ELEMENT:list相关的操纵。
PROTECT, UNPROTECT:为制止被R的垃圾接纳机制错误接纳,在用NEW_XXX或alloc*分派内存生成工具时,需要用PROTECT()函数括起来,最后用UNPROTECT(n)打消掩护,n的个数应该便是之前PROTECT函数被利用过的次数。