我在R中遇到了一个奇怪的问题。我使用旧版本的Rcpp要将R与某些C++集成(可惜升级不是一种选择!),我使用的Rcpp是旧的RccpTemplate。但是我怀疑问题在那里。在R这个错误的常见情况是什么:“SET_STRING_ELT()的值必须是'CHARSXP'而不是'字符'”
我有一个运行良好的大部分时间一些R代码里面,但有时(特别是处理大量数据时)与Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'character'
它总是在列表操作失败,如神秘失败:
res[["blabla"]] = r
但是,如果我使用options(error=recover)
并在错误发生后尝试相同,则可以毫无问题地执行分配。 C++只处理数字向量,实际上很远的时间是来自分配失败的代码。
所以我模糊的问题是:这种行为最常见的原因是什么?记性不好?坏对象(可能是坏的RcppResultSet
)?我有麻烦攻击这个问题...
出于完整性:
platform i386-pc-solaris2.10
arch i386
os solaris2.10
system i386, solaris2.10
status
major 2
minor 10.1
year 2009
month 12
day 14
svn rev 50720
language R
一个可重复的例子会让它更容易帮助你---因为很少有人仍然运行与你的日期一样的软件版本,所以这很难实现。 – 2011-04-01 13:20:39
我希望我可以选择运行哪个软件:S此问题很难重现,因此我怀疑它与某种内存损坏有关。我的问题更多的是,你有没有与类似的东西打过仗?最终成为问题的是什么?在调试中有点指导...... – 2011-04-01 13:32:52
正如你可能想象的那样,我的用法并不关注我们称之为弃用的Rcpp API。至于错误消息,我不认为我曾见过它。它可能已经在R中得到了修复。 – 2011-04-01 13:42:37