小编Mat*_*der的帖子

GraphViz:Windows PATH未使用新安装程序设置,从R调用时出现问题

在R库中,我使用dot程序(来自GraphViz)来生成一些图形(通常是png格式).dot是一个通常的可执行文件,我通过systemR命令执行它.到目前为止,一切运行正常,因为GraphViz安装程序正在添加dot到PATH环境变量.我只是要求用户安装GraphViz.

从版本2.31(参见http://www.graphviz.org/Download_windows.php)开始,GraphViz不再更新PATH环境变量,因此调用dot失败(这不是一个惊喜).因为库的用户通常不是计算机专家,所以我不能要求他们更新PATH以包含GraphViz.

该库分布在CRAN上.出于这个原因,我无法分发可执行文件(或任何已编译的代码).我主要需要Windows的解决方案,因为这似乎不会影响Linux或Mac.

关于如何进行生成图像文件的任何想法?还是找dot

r graphviz

16
推荐指数
2
解决办法
2万
查看次数

如何处理R中的C++内部数据结构以允许保存/加载?

在R中,我使用内部C++结构来存储数据(使用R_ExternalPtr).然后可以使用各种功能处理数据.这是一个简单的例子(真正的数据结构要复杂得多):

#include <Rinternals.h>
class MyObject{
        public:
        int type;
        MyObject(int t):type(t){}
};


void finalizeMyObject(SEXP ptr){
    MyObject * mo= static_cast<MyObject *>(R_ExternalPtrAddr(ptr));
    delete mo;
}

extern "C" {

    SEXP CreateObject(SEXP type) {
        SEXP ans;
        int nb = length(type);
        PROTECT(ans=allocVector(VECSXP, nb));
        int * typeP = INTEGER(type);
        SEXP cl;
        PROTECT(cl = allocVector(STRSXP, 1));
        SET_STRING_ELT(cl, 0, mkChar("myObject"));
        for(int i=0; i<nb; i++){
            MyObject * mo = new MyObject(typeP[i]);
            SEXP tmpObj = R_MakeExternalPtr(mo, R_NilValue, R_NilValue);
            R_RegisterCFinalizerEx(tmpObj, (R_CFinalizer_t) finalizeMyObject, TRUE);

            classgets(tmpObj, cl);
            SET_VECTOR_ELT(ans, i, tmpObj);//Put in vector
        }
        UNPROTECT(2); …
Run Code Online (Sandbox Code Playgroud)

c c++ r

9
推荐指数
1
解决办法
3040
查看次数

update()具有局部协变量的函数内的模型

我需要从函数内部更新回归模型.理想情况下,该功能应该与任何类型的模型(工作lm,glm,multinom,clm).更准确地说,我需要添加一个或几个在函数内定义的协变量.这是一个例子.

MyUpdate <- function(model){
     randData <- data.frame(var1=rnorm(length(model$residuals)))
     model2 <- update(model, ".~.+randData$var1")
     return(model2)
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例用法

data(iris)
model1 <- lm(Sepal.Length~Species, data=iris)
model2 <- MyUpdate(model1)
Run Code Online (Sandbox Code Playgroud)

eval(expr,envir,enclos)出错:找不到对象'randData'

这是glm的另一个例子

model1 <- glm(Sepal.Length>5~Species, data=iris, family=binomial)
model2 <- MyUpdate(model1)
Run Code Online (Sandbox Code Playgroud)

任何的想法?

r lm glm

8
推荐指数
1
解决办法
715
查看次数

Rcmd检查:通过“ :::”调用导入的未导出对象

这个问题与Rcmd checkR-Devel(3.1.0)有关。

我正在维护一个名为A的程序包,该程序“依赖”另一个程序包,让我将第二个程序包称为B。由于以下原因,我使用“ Depends”代替了“ import”:

  • 大多数使用软件包A的人也使用软件包B。
  • 包A广泛使用的功能,来自包B。
  • 程序包B本身“依赖”其他程序包。

程序包A使用程序包B的“未导出”功能,Rcmd check并对以下内容进行投诉:通过':::'调用导入的未导出对象(作为注释,但我希望将其全部删除)。我的问题是:我应该如何正确处理此笔记?我应该如何正确利用另一个软件包中的“未导出”功能?

我知道我们不应该使用“未导出”功能,但是我参与了这两个软件包的开发。

r package

5
推荐指数
0
解决办法
922
查看次数

标签 统计

r ×4

c ×1

c++ ×1

glm ×1

graphviz ×1

lm ×1

package ×1