使用Reformae2软件包和dcast在R中设置SEGFULT

使用Reformae2软件包和dcast在R中设置SEGFULT,r,segmentation-fault,reshape2,R,Segmentation Fault,Reshape2,当我尝试使用dcast(来自restrape2包)重塑特定数据帧时,RStudio崩溃了。我发现崩溃实际上发生在R本身,所以我在R.app中运行了我的铸造代码,并得到了该站点名称的错误类型:error:segfault from C stack overflow。在谷歌等的帮助下,我了解到这是一个内存访问错误 好吧,我已经走了那么远,但我不知道从这里走到哪里。我不能提供一个真实的可复制的例子,因为我的数据框大约是558000行,而这个问题不会发生在小玩具的例子上。例如,即使我获取50000行数据

当我尝试使用
dcast
(来自
restrape2
包)重塑特定数据帧时,RStudio崩溃了。我发现崩溃实际上发生在R本身,所以我在R.app中运行了我的铸造代码,并得到了该站点名称的错误类型:
error:segfault from C stack overflow
。在谷歌等的帮助下,我了解到这是一个内存访问错误

好吧,我已经走了那么远,但我不知道从这里走到哪里。我不能提供一个真实的可复制的例子,因为我的数据框大约是558000行,而这个问题不会发生在小玩具的例子上。例如,即使我获取50000行数据子集,
dcast
也可以正常工作。是否存在导致问题的特定数据行?如果是这样的话,有人能建议我寻找哪些可能导致我所遇到的错误类型的功能吗

下面是我正在转换的数据帧的子集(一些变量有假值),后面是我正在使用的转换函数。我还在下面的
dput
函数中包含了这个小数据片段,以防使用它会有所帮助。实际数据集约有700个
prog
值,15个
prog1
值和5个
fa.type

  id        term   yr    nslds acad.lev    prog            prog1 fa.type amount
1  1   Fall 2009 2010 Graduate Graduate  loan 1      Other Loans    Loan   5000
2  1 Spring 2010 2010 Graduate Graduate  loan 1      Other Loans    Loan   5000
3  2   Fall 2009 2010 Graduate Graduate  loan 2    Stafford Loan    Loan   8781
4  2 Spring 2010 2010 Graduate Graduate  loan 2    Stafford Loan    Loan   8781
5  3   Fall 2007 2008 Graduate Graduate  loan 3    Stafford Loan    Loan   4250
6  3   Fall 2007 2008 Graduate Graduate grant 1 University Grant   Grant   1707
fa.wide=dcast(id+term+yr+nslds+acad.lev~prog1+fa.type,data=fa,value.var=“amount”,fun.aggregate=sum)


这不是一个答案,而是一个简单的(非感官的)可复制的例子,不适合评论。您可以通过这个简单的示例(在我的MacBookPro上)重新创建此错误


有趣的是,如果我运行
df2,我在包2中使用dcast将长表旋转到宽表时也会遇到同样的问题。我在这篇文章中找到了解决办法。具体来说,您可以在此页面下载split_numeric.c和loop apply.c。从R控制台卸载程序包plyr,最后在本地重新安装程序包:install.packages('/path/to/source',repos=NULL,type='source')


这解决了我的问题,希望能有所帮助。

为了解决这个老问题,这是一个如中所述已修复的错误。

也许您可以将数据切割成更小的片段,在每个片段上运行dcast,然后再将它们绑定在一起。如果有必要,我会这样做(或者我将尝试使用不同于base R或原始整形软件包的整形功能),但我想深入了解这一点,以供将来参考,并提供解决方案,以防其他人遇到类似问题。1.您应该在报告时将此作为一个问题,您可以先尝试聚合(使用data.table),然后重新格式化为宽格式--如果这是SEGFULT的原因,这可能会减小问题的大小。我已经报告了问题。感谢您的建议。此外,我能够使用
rehshape
包中的
cast
函数来重新格式化数据,但我仍然想知道是什么导致了此错误。如果@Hadley和他的eam在Github上报告任何内容,我将在这里发布。我知道这可能会很痛苦,但如果您可以尝试发布一些代码来模拟复制错误的数据,这将非常有帮助。@hadley,既然我可以复制此崩溃,我是否应该为此提交一份错误报告?您好@SimonO101,您能解决此问题吗?我遇到了问题R版本3.0.1也有同样的问题…哼…@SimonO101,有什么建议吗?将数据帧分成几个部分,然后再次运行dcast?谢谢!@GodinA现在就使用
重塑
包中的
cast
功能。它的工作方式基本上与
dcast
相同,但没有出现segfault错误(据我所知)@djhurio这与R版本的更改无关,而是在包中修复了错误。请参阅
fa = structure(list(id = c(1, 1, 2, 2, 3, 3), term = structure(c(7L, 
8L, 7L, 8L, 1L, 1L), .Label = c("Fall 2007", "Spring 2008", "Summer 2008", 
"Fall 2008", "Spring 2009", "Summer 2009", "Fall 2009", "Spring 2010", 
"Summer 2010", "Fall 2010", "Spring 2011", "Summer 2011", "Fall 2011", 
"Spring 2012", "Summer 2012", "Fall 2012", "Spring 2013"), class = c("ordered", 
"factor")), yr = c(2010L, 2010L, 2010L, 2010L, 2008L, 2008L), 
    nslds = structure(c(7L, 7L, 7L, 7L, 7L, 7L), .Label = c("1st Year, Never Attended", 
    "1st Year, Previously Attended", "2nd Year", "3rd Year", 
    "4th Year", "5th Year+", "Graduate"), class = c("ordered", 
    "factor")), acad.lev = structure(c(6L, 6L, 6L, 6L, 6L, 6L
    ), .Label = c("Freshman", "Sophomore", "Junior", "Senior", 
    "PB Undergrad", "Graduate"), class = c("ordered", "factor"
    )), prog = c("loan 1", "loan 1", "loan 2", "loan 2", "loan 3", 
    "grant 1"), prog1 = c("Other Loans", "Other Loans", "Stafford Loan", 
    "Stafford Loan", "Stafford Loan", "University Grant"), fa.type = structure(c(3L, 
    3L, 3L, 3L, 3L, 2L), .Label = c("Athletic", "Grant", "Loan", 
    "Scholarship", "Waiver", "Work/Study"), class = "factor"), 
    amount = c(5000, 5000, 8781, 8781, 4250, 1707)), .Names = c("id", 
"term", "yr", "nslds", "acad.lev", "prog", "prog1", "fa.type", 
"amount"), row.names = c(NA, 6L), class = "data.frame")
require(reshape2)
n = 1448
df <- data.frame( Student = rep( 1:n , each = 2 ) , Grade = sample( 100 , n*2 , repl = TRUE ) )
df2 <- dcast( df , Student ~ Student , value.var = "Grade" , sum )
Error: segfault from C stack overflow
R version 2.15.2 (2012-10-26)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] reshape2_1.2.2

loaded via a namespace (and not attached):
[1] plyr_1.8      stringr_0.6.2
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fff5f3ff120

VM Regions Near 0x7fff5f3ff120:
    JS JIT generated code  00004d431a401000-00004d431a402000 [    4K] ---/rwx SM=NUL  
--> STACK GUARD            00007fff5bc00000-00007fff5f400000 [ 56.0M] ---/rwx SM=NUL  stack guard for thread 0
    Stack                  00007fff5f400000-00007fff5fc00000 [ 8192K] rw-/rwx SM=COW  thread 0

Application Specific Information:
objc[57147]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_c.dylib               0x00007fff897c4632 small_free_scan_madvise_free + 41
1   libsystem_c.dylib               0x00007fff897c5f06 szone_free_definite_size + 4186
2   libsystem_c.dylib               0x00007fff897fe789 free + 194
3   libR.dylib                      0x0000000100222dbf R_gc_internal + 7327 (memory.c:952)
4   libR.dylib                      0x0000000100224919 Rf_allocVector + 841 (memory.c:2356)
5   plyr.so                         0x000000010144bd2c split_indices + 204 (split-numeric.c:23)
6   libR.dylib                      0x00000001001b4cc7 do_dotcall + 16311 (dotcode.c:593)
7   libR.dylib                      0x00000001001e4448 Rf_eval + 1672 (eval.c:494)
8   libR.dylib                      0x00000001001e5edd do_begin + 141 (eval.c:1415)
9   libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
10  libR.dylib                      0x00000001001e93b1 Rf_applyClosure + 849 (eval.c:861)
11  libR.dylib                      0x00000001001e41b2 Rf_eval + 1010 (eval.c:512)
12  libR.dylib                      0x00000001001e74e5 do_set + 709 (eval.c:1717)
13  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
14  libR.dylib                      0x00000001001e5edd do_begin + 141 (eval.c:1415)
15  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
16  libR.dylib                      0x00000001001e93b1 Rf_applyClosure + 849 (eval.c:861)
17  libR.dylib                      0x00000001001e41b2 Rf_eval + 1010 (eval.c:512)
18  libR.dylib                      0x00000001001e74e5 do_set + 709 (eval.c:1717)
19  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
20  libR.dylib                      0x00000001001e5edd do_begin + 141 (eval.c:1415)
21  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
22  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
23  libR.dylib                      0x00000001001e5edd do_begin + 141 (eval.c:1415)
24  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
25  libR.dylib                      0x00000001001e93b1 Rf_applyClosure + 849 (eval.c:861)
26  libR.dylib                      0x00000001001e41b2 Rf_eval + 1010 (eval.c:512)
27  libR.dylib                      0x00000001001e74e5 do_set + 709 (eval.c:1717)
28  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
29  libR.dylib                      0x00000001001e5edd do_begin + 141 (eval.c:1415)
30  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
31  libR.dylib                      0x00000001001e93b1 Rf_applyClosure + 849 (eval.c:861)
32  libR.dylib                      0x00000001001e41b2 Rf_eval + 1010 (eval.c:512)
33  libR.dylib                      0x00000001001e74e5 do_set + 709 (eval.c:1717)
34  libR.dylib                      0x00000001001e429c Rf_eval + 1244 (eval.c:468)
35  libR.dylib                      0x000000010021c761 R_ReplDLLdo1 + 481 (main.c:362)
36  org.R-project.R                 0x0000000100022c24 run_REngineRmainloop + 196
37  org.R-project.R                 0x00000001000159b7 -[REngine runREPL] + 119
38  org.R-project.R                 0x0000000100001f24 main + 852
39  org.R-project.R                 0x0000000100001914 start + 52