gpt4 book ai didi

c++ - "Error: not compatible with requested type"随机发生

转载 作者:行者123 更新时间:2023-11-28 02:21:18 25 4
gpt4 key购买 nike

关闭。这个问题需要debugging details .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




我目前正在开发一个使用 Rcpp 和 RcppArmadillo 的 R 包,我遇到了一个随机发生的奇怪错误。我无法发布我的函数的所有代码以从头开始重现它(它是 400 + 300 行),但你可以在 github 上找到包:https://github.com/config-i1/CES - 我使用的函数在“R/ces.R”文件中,它取决于“src/cesfun.cpp”中的函数。

因此,当您安装软件包 ( devtools::install_github("config-i1/CES") ) 并运行以下命令时:

library('Mcomp')
x <- cbind(c(rep(0,25),1,rep(0,43)),c(rep(0,10),1,rep(0,58)))
ces(ts(c(M3$N1457$x,M3$N1457$xx),frequency=12),h=18,holdout=T,intervals=T,seasonality="F",xreg=x,trace=T)->test

错误 Error: not compatible with requested type有时会被退回。但这并非一直发生(大约 3 次运行中的 1 次),因此很难追踪此错误。这件事发生在 Linux 和 Windows 上。 R 只是在 Mac OS 上崩溃而不是显示错误。

实际上,我曾尝试进行调查,发现当调用以下 Rcpp 函数时,错误发生在 for 循环中的随机迭代中...

code skipped



我知道我可能做错了什么,但我不知道是什么。

我将不胜感激任何帮助!

谢谢!

更新。

我发现代码中的错误是什么。因此,以防万一有人遇到类似的事情,这就是问题所在以及如何解决它:

我在代码的不同部分使用了从 R 和 Rcpp 调用的同一个函数。所以变量被定义为 SEXP: forecaster(SEXP matxt, SEXP matF) .结果,当我在 Rcpp 中调用该函数时,我需要使用 wrap()改造 arma:mat变量到 SEXP .电话是这样的: forecaster(wrap(matrixxt),wrap(matrixF)) .

在大多数情况下,这工作得很好,但有时出于某种原因 wrap()函数没有做它应该做的事情,结果完全不同的东西被传递给 forecaster .传递的值无法转换为 forecaster 中的 NumericMatrix ,因此“错误:与请求的类型不兼容”。这种情况很少发生,而且很难追踪。

解决方案是更改 forecaster所需类型的参数: forecaster(arma::mat matrixxt, arma::mat matrixF) , - 将值传递给 forecaster直接在 Rcpp 中,没有 wrap() ,并编写一个特殊的 Rcpp 包装函数(因此可以从 R 调用 forecaster)。

最佳答案

欢迎来到 StackOverflow。环顾四周,感受一下哪些问题有帮助,哪些没有。

你的(目前)没有太大的帮助——你只是在你的代码中有一个错误,你每隔一段时间就会提供一个不匹配的类型。 Rcpp 已经取得了一定的成功,CRAN 上有超过 450 个包使用它,现在有 150 个包使用 RcppArmadillo。因此,这些类型的对象已经被实例化了数百万次并代表了健壮的代码——所以你应该尽量减少你的问题,直到你得到 smallest possible reproducible example .

关于c++ - "Error: not compatible with requested type"随机发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com