Size: a a a

R language and Statistical data analysis

2019 December 23

C

Cocos in R language and Statistical data analysis
😁
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
да, кстати. коллеги, подскажите какой-нибудь простой набор операций (допустим, на пяток строк)
на котором можно было бы продемонстрировать профилирование?
а то обычно используют для этого графики ggplot (агрегация + визуализация), но я что-то не хочу их брать %(
источник

Л

Леона in R language and Statistical data analysis
источник

Л

Леона in R language and Statistical data analysis
источник
2019 December 24

ГД

Григорий Демин in R language and Statistical data analysis
Philipp Upravitelev
да, кстати. коллеги, подскажите какой-нибудь простой набор операций (допустим, на пяток строк)
на котором можно было бы продемонстрировать профилирование?
а то обычно используют для этого графики ggplot (агрегация + визуализация), но я что-то не хочу их брать %(
Попробуйте сабсет обычного data.frame с именами строк. Там обычно make.unique вылезает в первые ряды
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
о. интересно, спасибо
источник

C

Cocos in R language and Statistical data analysis
Andrey
у меня десятки миллионов строк джойнятся, фильтруются, группируются и присваются через := очень даже быстро
opl<-list(rep("",1000000))
system.time(for(i in 1:1000000)  opl[[1]][i]<-paste0("vn",i))
пользователь      система       прошло
       8.53         0.11         8.73
opl<-data.table(rep("",1000000))
system.time(for(i in 1:1000000)  opl[i,V1:=paste0("vn",i)])
пользователь      система       прошло
     693.02        66.59       747.53
источник

C

Cocos in R language and Statistical data analysis
в 81 раз медленнее!!!!
источник

⌨️ in R language and Statistical data analysis
Я не спец по data.table, но вот тут написано, что loop-friendly функция это set
источник

A

Andrey in R language and Statistical data analysis
opl[1:1e6, V1 := paste0("vn", 1:1e6)] цикл не нужен
источник

АК

Артём Клевцов in R language and Statistical data analysis
Andrey
opl[1:1e6, V1 := paste0("vn", 1:1e6)] цикл не нужен
paste0("vn", .I)
источник

A

Andrey in R language and Statistical data analysis
Я пишу для общего случая
источник

A

Andrey in R language and Statistical data analysis
Когда что-то полезное добавляется, а не номера строк
источник

АК

Артём Клевцов in R language and Statistical data analysis
Cocos
opl<-list(rep("",1000000))
system.time(for(i in 1:1000000)  opl[[1]][i]<-paste0("vn",i))
пользователь      система       прошло
       8.53         0.11         8.73
opl<-data.table(rep("",1000000))
system.time(for(i in 1:1000000)  opl[i,V1:=paste0("vn",i)])
пользователь      система       прошло
     693.02        66.59       747.53
Дело не в data.table, а в твоём непонимании векторизованных функций в R (по моему предолпожению).
Фильтровать 100500 раз таблицу никакой ЯП быстро не сможет, даже если индекс построить.
источник

A

Andrey in R language and Statistical data analysis
Andrey
opl[1:1e6, V1 := paste0("vn", 1:1e6)] цикл не нужен
Этот вариант 3.8 сек на старом офисном кудахтере с 2 ядрами
источник

A

Andrey in R language and Statistical data analysis
Цикл к обеду досчитается
источник

АК

Артём Клевцов in R language and Statistical data analysis
Cocos
по сравнению со списком присваивание строк замедляется в десятки раз
Первоначальный тезис выглядит довольно абстрактно. Приведённый пример для воспроизведения «проблемы» неадекватен по отношению к data.table.
Изначально заход выглядил как вброс, но теперь понятно почему.
источник

АК

Артём Клевцов in R language and Statistical data analysis
Ох уж эти «разоблачители» 😁
Начать надо с ревью своего же кода...
источник

C

Cocos in R language and Statistical data analysis
for(l in 1:lc_max)  for(pcease in 1:cease)    for(nOnMinI in cycles$n-1){
   p<-p+1; outcome[p,cname:=paste0(pcluster1[[pcease]]["cname"],"l",l,"n",nOnMinI,"vn")]
   for(vergeI in cycles$v-1){  
       p<-p+1; outcome[p,cname:=paste0(pcluster1[[pcease]]["cname"],"l",l,"n",nOnMinI,"v",vergeI)]
       p<-p+1; outcome[p,cname:=paste0(pcluster1[[pcease]]["cname"],"l",l,"n",nOnMinII,"vd",vergeI)]
       p<-p+1; outcome[p,cname:=paste0(pcluster1[[pcease]]["cname"],"l",l,"n",nOnMinI,"vm",vergeI)]
   }
циклов несколько
источник

АК

Артём Клевцов in R language and Statistical data analysis
Всё ещё хуже, чем предполагал изначально.
источник