我在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