Ошибка с Rexcel при запуске Excel
Сегодня что-то произошло (никогда не было этой проблемы раньше), когда я запускаю книгу Excel, где я использую Rexcel.
А потом еще ошибки... Все раньше работало правильно. У кого-нибудь есть представление о том, в чем может быть проблема?
Другая странная вещь заключается в том, что после этого работает Rapply и так далее. Но я снова получаю ошибки, когда закрываю книгу.
Так что проблема появляется, когда я startR
от Rexcel Meny в Excel.
РЕДАКТИРОВАТЬ: благодаря flodel
за его ответ. Но нельзя ли запустить Sub сейчас или нет?
Sub create_efficient_frontier()
RInterface.StartRServer
Sheets("Analys").Range("A52:K82").ClearContents
RInterface.PutDataframe "datat", Range("ChosenData!X181:AD352")
RInterface.PutArray "startdate", Range("Analys!K2")
RInterface.PutArray "enddate", Range("Analys!K3")
RInterface.RunRFile "C:/Users/Documents/EffFront.R"
RInterface.GetDataframe "hmz$pweight", Range("Analys!A51:E76")
End Sub
Я получаю сообщение об ошибке 13 ("несовместимые типы") в строкеRInterface.GetDataframe "hmz$pweight", Range("Analys!A51:E76")
Это сработало вчера, см. Запуск макроса с помощью Rexcel
Solution:
Ctrl+Alt+Shift+F9 seems to work:)
С уважением
1 ответ
Да. Я боролся с этим сам. Скорее всего, ваши вычисления должны быть рассчитаны в определенном порядке. Как правило, некоторые из ваших (RApply
, REval
и т. д.) вызовы создают некоторые данные (например, x <- 10
) в сеансе R и последующих вызовах ожидается, что данные будут существовать: вычислить x^2
,
Все отлично работает, когда вы создаете свою таблицу с нуля. Проблема в том, что когда вы сохраняете и открываете его снова, Excel не знает, в каком порядке ему нужно вычислять ваши ячейки: он вычисляет свое дерево зависимостей, выполняя вычисления ячеек в несколько случайном порядке. Так что же происходит, клетка должна вычислить x^2
может быть запущен до того, как ячейка, которая создает x
в вашей среде R, которая вызывает ошибку.
Это раздражает, но, как вы заметили, ошибки со временем исчезают после того, как Excel сможет построить свое дерево зависимостей. Если вам абсолютно необходимо найти решение этой проблемы, ему придется задействовать код VBA, чтобы помочь Excel построить свое дерево зависимостей в очень конкретном порядке.