Ошибка с 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 построить свое дерево зависимостей в очень конкретном порядке.

Другие вопросы по тегам