Size: a a a

R (язык программирования)

2021 April 16

ДВ

Дмитрий Володин... in R (язык программирования)
Любой язык можно сделать медленным при большом желании. Поговаривают, что в R это как раз очень просто. Расскажите, это каких же объёмов ваши данные, что стандартный цикл вас не устроил и захотелось переписать его же на C? Возможно стандартными средствами можно оптимизировать код
источник

M

Max in R (язык программирования)
Я не претендую на то, что у меня оптимальный код для решения моей задачи только средствами R. У меня происходит перебор на семимерной сетке бэктеста торговли на бирже, точек сетки много, поэтому очень долго это происходит
источник

ДВ

Дмитрий Володин... in R (язык программирования)
А почему изначально для этих задач был выбран R? И может стоит посмотреть в сторону готовых пакетов для тех анализа, алготрейдинга и этого всего? Если это типовая задача, то скорее всего умные люди либо уже написали оптимизированный код на R, либо решили вашу же задачу и написали код на C/C++/Fortran
источник

M

Max in R (язык программирования)
Потому что я знаю только R)
источник

ДВ

Дмитрий Володин... in R (язык программирования)
У, тогда лучше в C не залезать, кмк)
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Погуглите и правда решение вашей задачи на R. Скорее всего, если задача довольно типовая, то кто-то уже написал пакет под это дело
источник

M

Max in R (язык программирования)
Там разные модели эконометрические. Я хочу знать, что происходит в программе, поэтому руками все прописываю
источник

M

Max in R (язык программирования)
Ладно, спасибо за советы
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Посмотрите стандартные советы по работе с циклами в R. От себя могу следующие перечислить:
1. Если вы заранее знаете тип вектора, в котором будут храниться результаты - объявите, хуже не будет.
2. Если вы знаете заранее и размер - ещё лучше, тоже задайте. Что-то вроде такого, если объединить два предыдущих пункта x <- integer(length = l)
3. В цикле никогда не "наваливайте" в уже сущствующий вектор. То есть избегайте по максимуму конструкций типа x <- c(x, f(i)). Если вам надо изменять значения конкретного элемента вектора - обратитесь к нему по индексу (для этого существуют два предыдущих пункта). То есть лучше вот так: x[i] <- f(i)

Такой подход может действительно сократить время выполнения и уменьшить затраты по ресурсам
источник

M

Max in R (язык программирования)
Спасибо!
источник

M

Max in R (язык программирования)
Да, это уже все учтено
источник

M

Max in R (язык программирования)
Я просто уже основную часть цикла перенес в C
источник

M

Max in R (язык программирования)
Она ускорилась в 20 раз по сравнению с R
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Тогда тем более лучше в специализированных чатах спрашивать)
источник

M

Max in R (язык программирования)
Вот не могу теперь тупо перемножить вектор в С
источник

EP

Ed P in R (язык программирования)
https://www6.inrae.fr/mia-paris/content/download/4231/40441/version/1/file/Chiquet_r-tricks.pdf

вот здесь на стр 44 упоминается какой-то  Armadillo library for linear algebra
источник

EP

Ed P in R (язык программирования)
https://scholar.princeton.edu/sites/default/files/q-aps/files/slides_day4_am.pdf

или вот здесь на слайде 5 похоже на перемножение двух векторов
источник

d

demonik in R (язык программирования)
Добрый день. Вроде простая задачка, но не могу сходу сообразить: как из 2х векторов или (матриц) одинаковой размерности выбрать максимальные значения по каждой позиции и вывести результат в виде новой матрицы. Заранее благодарен за помощь.
источник

DP

Dmitry Perepechin in R (язык программирования)
Привет. А ты случайно не знаешь, можно ли как-то разложить несколько лифлетовских карт по сетке? А то у них (или у меня) проблема с тем чтоб отренедерить их а таббоксе во флексдэшборде
источник

PD

Pavel Demin in R (язык программирования)
Привет! Если честно, не очень понял вопрос
источник