RStudio рушился, когда я попытался изменить конкретный фрейм данных с помощью dcast
(из пакета reshape2
). Я обнаружил, что авария на самом деле происходила в самом R, поэтому я запустил свой код кастинга в R.app и получил тип ошибки, который дает этому сайту свое имя: Error: segfault from C stack overflow
. С помощью Google и SO я узнал, что это ошибка доступа к памяти.
Хорошо, я добрался так далеко, но я не знаю, куда идти отсюда. Я не могу представить истинный воспроизводимый пример, потому что мой кадр данных составляет около 558 000 строк, и проблема не возникает на небольших примерах игрушек. Например, даже если я беру, скажем, подмножество данных в 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)
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")