- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 RcppEigen.package.skeleton()
安装 mypackage5
包,但是 中的
和 LogicalVector&
有问题>Rcpp::List getPIcvalueRcppExport SEXP mypackage5_getPIcvalue
函数。这是带有 bool varIn[]
的 C++ 函数,
#include <RcppEigen.h>
#include <Rcpp.h>
using namespace Eigen;
using namespace Rcpp;
using std::string;
// getPIcvalue
Rcpp::List getPIcvalue(int p, bool nest, string criteria, bool varIn[], bool findIn, int n,const MatrixXd& Y,const MatrixXd& Xf,const MatrixXd& X0,double sigma);
RcppExport SEXP mypackage5_getPIcvalue(SEXP pSEXP,SEXP nestSEXP,SEXP criSEXP,SEXP varInSEXP,SEXP findInSEXP,SEXP nSEXP,SEXP YSEXP,SEXP XfSEXP,SEXP X0SEXP,SEXP sigmaSEXP) {
BEGIN_RCPP
SEXP __sexp_result;
{
Rcpp::RNGScope __rngScope;
Rcpp::traits::input_parameter< int >::type p(pSEXP );
Rcpp::traits::input_parameter< bool >::type nest(nestSEXP );
Rcpp::traits::input_parameter< string >::type criteria(criSEXP );
Rcpp::traits::input_parameter< bool >::type varIn[](varInSEXP );
Rcpp::traits::input_parameter< bool >::type findIn(findInSEXP );
Rcpp::traits::input_parameter< int >::type n(nSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type Y(YSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type Xf(XfSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type X0(X0SEXP );
Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP );
Rcpp::List __result = getPIcvalue(p, nest, criteria, varIn[], findIn, n, Y, Xf, X0, sigma);
PROTECT(__sexp_result = Rcpp::wrap(__result));
}
UNPROTECT(1);
return __sexp_result;
END_RCPP
}
当我运行 Rcmd INSTALL --build mypackage5
时,错误是:
* installing *source* package 'mypackage5' ...
** libs
*** arch - i386
cygwin warning:
MS-DOS style path detected: C:/R/R-31~1.1/etc/i386/Makeconf
Preferred POSIX equivalent is: /cygdrive/c/R/R-31~1.1/etc/i386/Makeconf
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
g++ -m32 -I"C:/R/R-31~1.1/include" -DNDEBUG -I"C:/Users/LJH/Documents/R/win-library/3.1/Rcpp/include" -I"C:/Users/LJH/Documents/R/win-library/3.1/RcppEigen/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include" -O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp: In function 'SEXPREC* mypackage5_getPIcvalue(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)':
RcppExports.cpp:27:68: error: expected primary-expression before ']' token
make: *** [RcppExports.o] Error 1
Warning: running command 'make -f "Makevars.win" -f "C:/R/R-31~1.1/etc/i386/Makeconf" -f "C:/R/R-31~1.1/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="mypackage5.dll" OBJECTS="RcppExports.o rcppeigen_hello_world.o"' had status 2
cygwin warning:
MS-DOS style path detected: C:/R/R-31~1.1/etc/i386/Makeconf
Preferred POSIX equivalent is: /cygdrive/c/R/R-31~1.1/etc/i386/Makeconf
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
g++ -m32 -I"C:/R/R-31~1.1/include" -DNDEBUG -I"C:/Users/LJH/Documents/R/win-library/3.1/Rcpp/include" -I"C:/Users/LJH/Documents/R/win-library/3.1/RcppEigen/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include" -O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp: In function 'SEXPREC* mypackage5_getPIcvalue(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)':
RcppExports.cpp:27:68: error: expected primary-expression before ']' token
make: *** [RcppExports.o] Error 1
Warning: running command 'make -f "Makevars.win" -f "C:/R/R-31~1.1/etc/i386/Makeconf" -f "C:/R/R-31~1.1/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="mypackage5.dll" OBJECTS="RcppExports.o rcppeigen_hello_world.o" symbols.rds' had status 2
ERROR: compilation failed for package 'mypackage5'
* removing 'C:/Users/LJH/Documents/mypackage5.Rcheck/mypackage5'
第一,我尝试将 bool varIn[]
更改为 bool *varIn
,
// getPIcvalue
Rcpp::List getPIcvalue(int p, bool nest, string criteria, bool *varIn, bool findIn, int n,const MatrixXd& Y,const MatrixXd& Xf,const MatrixXd& X0,double sigma);
RcppExport SEXP mypackage5_getPIcvalue(SEXP pSEXP,SEXP nestSEXP,SEXP criSEXP,SEXP varInSEXP,SEXP findInSEXP,SEXP nSEXP,SEXP YSEXP,SEXP XfSEXP,SEXP X0SEXP,SEXP sigmaSEXP) {
BEGIN_RCPP
SEXP __sexp_result;
{
Rcpp::RNGScope __rngScope;
Rcpp::traits::input_parameter< int >::type p(pSEXP );
Rcpp::traits::input_parameter< bool >::type nest(nestSEXP );
Rcpp::traits::input_parameter< string >::type criteria(criSEXP );
Rcpp::traits::input_parameter< bool >::type varIn(varInSEXP );
Rcpp::traits::input_parameter< bool >::type findIn(findInSEXP );
Rcpp::traits::input_parameter< int >::type n(nSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type Y(YSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type Xf(XfSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type X0(X0SEXP );
Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP );
Rcpp::List __result = getPIcvalue(p, nest, criteria, varIn, findIn, n, Y, Xf, X0, sigma);
PROTECT(__sexp_result = Rcpp::wrap(__result));
}
UNPROTECT(1);
return __sexp_result;
END_RCPP
}
我遇到了这个错误:
RcppExports.cpp: In function 'SEXPREC* mypackage5_getPIcvalue(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)':
RcppExports.cpp:27:96: error: cannot convert 'Rcpp::traits::input_parameter<bool>::type {aka Rcpp::InputParameter<bool>}' to 'bool*' for argument '4' to 'Rcpp::List getPIcvalue(int, bool, std::string, bool*, bool, int, const MatrixXd&, const MatrixXd&, const MatrixXd&, double)'
第二,我尝试将 bool varIn[]
更改为 LogicalVector& varIn
,
// getPIcvalue
Rcpp::List getPIcvalue(int p, bool nest, string criteria, LogicalVector& varIn, bool findIn, int n,const MatrixXd& Y,const MatrixXd& Xf,const MatrixXd& X0,double sigma);
RcppExport SEXP mypackage5_getPIcvalue(SEXP pSEXP,SEXP nestSEXP,SEXP criSEXP,SEXP varInSEXP,SEXP findInSEXP,SEXP nSEXP,SEXP YSEXP,SEXP XfSEXP,SEXP X0SEXP,SEXP sigmaSEXP) {
BEGIN_RCPP
SEXP __sexp_result;
{
Rcpp::RNGScope __rngScope;
Rcpp::traits::input_parameter< int >::type p(pSEXP );
Rcpp::traits::input_parameter< bool >::type nest(nestSEXP );
Rcpp::traits::input_parameter< string >::type criteria(criSEXP );
Rcpp::traits::input_parameter< const LogicalVector& >::type varIn(varInSEXP );
Rcpp::traits::input_parameter< bool >::type findIn(findInSEXP );
Rcpp::traits::input_parameter< int >::type n(nSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type Y(YSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type Xf(XfSEXP );
Rcpp::traits::input_parameter< const MatrixXd& >::type X0(X0SEXP );
Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP );
Rcpp::List __result = getPIcvalue(p, nest, criteria, varIn, findIn, n, Y, Xf, X0, sigma);
PROTECT(__sexp_result = Rcpp::wrap(__result));
}
UNPROTECT(1);
return __sexp_result;
END_RCPP
}
错误是:
RcppExports.cpp: In function 'SEXPREC* mypackage5_getPIcvalue(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)':
RcppExports.cpp:27:96: error: invalid initialization of reference of type 'Rcpp::LogicalVector& {aka Rcpp::Vector<10, Rcpp::PreserveStorage>&}' from expression of type 'Rcpp::traits::input_parameter<Rcpp::Vector<10, Rcpp::PreserveStorage> >::type {aka Rcpp::InputParameter<Rcpp::Vector<10, Rcpp::PreserveStorage> >}'
RcppExports.cpp:11:12: error: in passing argument 4 of 'Rcpp::List getPIcvalue(int, bool, std::string, Rcpp::LogicalVector&, bool, int, Eigen::MatrixXd&, Eigen::MatrixXd&, Eigen::MatrixXd&, double)'
make: *** [RcppExports.o] Error 1
Warning: running command 'make -f "Makevars.win" -f "C:/R/R-31~1.1/etc/i386/Makeconf" -f "C:/R/R-31~1.1/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="mypackage5.dll" OBJECTS="RcppExports.o rcppeigen_hello_world.o"' had status 2
谁能帮帮我?提前谢谢你。
最佳答案
Rcpp 属性不能处理像bool varIn[]
这样的数组参数,或类似 bool *varIn
的指针.
关于你的尝试 2,你有一些 const
getPIcvalue
之间的不匹配这需要 LogicalVector&
和 mypackage5_getPIcvalue
由于某种原因使用 Rcpp::traits::input_parameter< const LogicalVector& >::type
.
您是否生成了 mypackage5_getPIcvalue
手动?如果是,为什么?如果不是,则 Rcpp 属性中存在错误。
关于c++ - 如何使用 boolean 数组或 LogicalVector Rcpp::List getPIcvalue() 和 RcppExport SEXP mypackage5_getPIcvalue(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738265/
我有很棒的vim-sexp和 vim-sexp-mappings-for-regular-people安装了插件,我遇到了一个我不确定如何解决的情况。 假设我有以下形式: (alimony barba
在任何 lisp 中是否有一种形式可以“传播”父 sexp 中的列表?喜欢: (+ (spread '(1 2 3))) -> (+ 1 2 3) 最佳答案 有两种方法可以做到这一点。哪个更好取决于你
如果我写一个文件使用 (with-open-file (s "~/example.sexp" :direction :output) (write '(1 2 3) :strea
我正在尝试创建一个捕获模板,该模板将 URL 转换为带有 的组织模式链接。作为链接名称。 我的转换函数如下所示: (defun get-page-title (url) "Get title o
sexp 是这样的:type sexp = Atom of string | sexp 列表列表,例如,"((a b) ((c d) e) f)"。 我编写了一个解析器来将 sexp 字符串解析为以下
我正在使用 C 中的 R 内部接口(interface)。我需要从 C 中分析 SEXP 的内容,但我不知道确切的 SEXP 结构。有没有一种简单的方法(或一些现有代码)可以将 SEXP 转储到控制台
我正在写一个 R package to provide debug helper functions gdb 打印 R 的 SEXP 和 Rcpp 数据类型的变量值。 C/C++ 是一种强类型语言,但
我有一个函数可以替换列表中符号的所有实例: (defun replace-symbol-in-sexp-fn (symbol-to-replace new-symbol sexp) (if (eq
对于一项任务,我们必须实现类似非常基本的 sexp 解析器的东西,这样的输入如下: "((a b) ((c d) e) f)" 它会返回: [["a", "b"], [["c", "d"], "e"]
这个问题在这里已经有了答案: Initialize a variable with different type based on a switch statement (2 个答案) 关闭 6 年
如何使用 org-contacts 设置纪念日,以便在我的议程.org 文件中显示生日等内容? 我的议程.org 文件包含以下内容,如 org-contacts 底部所述 #+STARTUP: sho
我需要将已知长度的 const char* 转换为 Rcpp::RawVector 以返回到 R. Rcpp::wrap 适用于许多类型,但似乎不适用于 char *。 最佳答案 library(Rc
愚蠢的人,但我自己想不出来 - 我如何获得下一个 sexp?就像 preceding-sexp 一样,但是向前。 最佳答案 查看 forward-sexp。你有一个很好的例子here . 好的,根据您
我在 utop 中运行这段代码: # type u = { a: int; b: float } [@@deriving sexp];; 但是没有生成预期的 s 表达式转换器声明。 我安装了 Core
我在 Hadley Wickham 的书中读到 RObjects 应该在 R 的 C API 中声明为 S 表达式 (SEXP): SEXP x( SEXP a, SEXP b { } 然而,在 Rc
假设我有一个函数将 SEXP 类型作为参数: SEXP myFun(SEXP param) 如何找出这个参数的类型?查看我的调试器中的 SEXP 类型,我可以看到我可以调用 param->sxpinf
考虑一个虚拟的例子 > cppFunction(' + NumericVector invert(NumericVector& x) { + x = x + 1; + return x
SEXP callFunction1(List network, List words, Function testWordContinuity){ SEXP res = testWordCont
有没有办法转换 arma::subview进入 SEXP ?创建矩阵后我有以下代码 X在我的 Rcpp代码: //.... MCMC loop if(i % skiplength == 0)
正在关注 this recipe ,我准备了这个搜索命令: (shell-command "grep . /tmp/listoffiles | xargs grep -n mystring" 1) 如
我是一名优秀的程序员,十分优秀!