2015-06-23 18 views
7

'un bir araya gelmesiyle ilgili olarak bu konuyla ilgili bir şey yapabildiğim kadar araştırdım ama SO veya dplyr github; Muhtemelen aşağıdaki kod, bugün önce iyi çalıştı gibi yeni bir konu?dplyr :: mutate lubridate :: ymd_hms ile R rastgele bir şekilde segfault

Sorun, kavramsal olarak basittir: bazen my_data %>% mutate(x = ymd_hms(x))'u çağırmak, ancak her zaman değil (yani rastgele), yakalanmış bir segfault ile R'nin çökmesine neden olur. Ben (: https://gist.github.com/john-sandall/05c3abb24fc738ddc2ad burada da): I can basit haliyle sorunu azalttık do_it() çalışan üzerinde bir segfault neden, bir noktada Yani

require(lubridate) 
require(dplyr) 

set.seed(42) 
make_some_random_datetimes = function(n) ymd("2015-01-01") + seconds(runif(n, min=0, max=60*60*24*365)) 

d = data.frame(
    col1 = make_some_random_datetimes(5000), 
    col2 = make_some_random_datetimes(5000) 
) 

do_it = function() { 
    d %>% mutate(
    col1 = ymd_hms(col1), 
    col2 = ymd_hms(col2) # for some reason, it only crashes when evaluating 2+ cols, if we removed this line it'd be fine 
) 
    return(TRUE) 
} 

do_it() # doesn't crash every time...it fails every nth time where n is randomly distributed with mean of roughly 7.7 

do_it_lots_of_times = function(n) for (i in 1:n) do_it() 

do_it_lots_of_times(50) # almost guaranteed to fail on my machine 

, Terminal'de çıktı çalıştıran R

*** caught segfault *** 
address 0x0, cause 'unknown' 
olduğunu

Bu sabah R sürüm 3.2.1'e yükseltildim, ancak 3.2.0'a geri dönüp kütüphaneleri yeniden yüklememe yardımcı olmuyor. Daha sonra R'yi kaldırmayı/yeniden yüklemeyi (brew install r'u tam güncelleştirilmiş/yükseltilmiş homebrew ile) denedim ve sonra yukarıdaki tüm gerekli paketleri yeniden yükledim. İşte sessionInfo() çıktısı var:

R version 3.2.1 (2015-06-18) 
Platform: x86_64-apple-darwin14.3.0 (64-bit) 
Running under: OS X 10.10.3 (Yosemite) 

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] dplyr_0.4.2  lubridate_1.3.3 

loaded via a namespace (and not attached): 
[1] lazyeval_0.1.10 R6_2.0.1  assertthat_0.1 magrittr_1.5 plyr_1.8.3  parallel_3.2.1 
[7] DBI_0.3.1  tools_3.2.1  memoise_0.2.1 Rcpp_0.11.6  stringi_0.5-2 digest_0.6.8 
[13] stringr_1.0.0 

bir istatistikçi olmak ve fikir gelmiyordu, o biraz ışık tutmak yardımcı olabilir, bakalım başarısızlık oranı dağılımına bakmak karar verdi. n'inci zamanında do_it() Yukarıdaki çöküyor çalıştıran ve n 50 çöker aşık nerede yazdıysa (örneğin 3 deneme, daha sonra 7 deneme), bu diziyi olsun: Bana bu dağılımı verir

3, 7, 9, 20, 9, 9, 9, 7, 4, 23, 6, 3, 3, 3, 7, 7, 3, 9, 6, 6, 7, 10, 13, 7, 3, 7, 4, 7, 9, 6, 7, 7, 6, 6, 7, 7, 7, 9, 6, 12, 7, 7, 5, 9, 18, 6, 7, 9, 9, 7 

:

alakası var ya da hiç yardımcı olmadığını fark başka şey 10.000 5000 dataframe d satır sayısını artıyor rağmen, bilmiyorum den n ortalamasını artırmak gibi görünüyor ~ 8 ila ~ 20.

Bu konuyla ilgili herhangi bir yardım son derece hoş geldiniz!

+1

Muhtemelen bununla ilgili: https://github.com/hadley/dplyr/issues/1231 –

+0

En son 64 bit R, en yeni rstudio sürümlerinde pencereler doğrulandı. dplyr_0.4.2 lubridate_1.3.3 Çöküntüler * her zaman * Tuhaf şekilde r 123 günlük dosyası yazmıyor –

cevap

6

% 90, bu sorunu buraya bakınız bu dplyr (0.4.2) en son sürümünde bir hata olduğunu emin:

: Düzeltmeler sorunu şöyle 0.4.1 için https://github.com/hadley/dplyr/issues/1231

dplyr benim versiyonunu Downgrading

packageurl = "http://cran.r-project.org/src/contrib/Archive/dplyr/dplyr_0.4.1.tar.gz" 
install.packages(packageurl, repos=NULL, type="source", dependencies = TRUE) 
+0

Benim için çökmez, n = 1000, 'RStudio 0.98.1062. dplyr_0.4.0, lubridate_1.3.3' 0.4.2 sorun gibi görünüyor. – Vlo

+0

Benim için çökmez, n = 1000, dplyr_0.4.1 – jeremycg