Типизированный R
187 subscribers
10 photos
4 videos
15 links
Yet Another Programming Blog. Just better.

Про R, пространственный анализ, науку и жизнь в НИИ
Download Telegram
#intro

Привет, это Толя Цыпленков. Буду писать про науку, карьеру, программирование, книги, статьи, неудачи на работе и прочие интересности.

Все самое интересное — на гитхабе, так же иногда
на английском буду анонсировать в LinkedIn и Мастодон, а на русском — тут.
🤩10
#intro

Почему типизированный и что ждать в канале

Вообще "Типизированный R" — это каламбур, так как язык R славится своей динамической типизацией (типа "на словах ты целое число, а не деле строка"), и многими рассматривается только как статистический инструмент. Я хочу доказать обратное.

Мои интересы вертятся не только вокруг R, поэтому на канале еще будет про:
- геопространственный анализ #geospatial
- науку #science
- карьеру #career
- жизнь в Новой Зеландии #nz
🤩7
#rstats #python #geospatial

Кто является lingua franca пространственного анализа?

Сейчас пишу заявку на грант R Consortium и в обосновании проблемы исследования решил рассказать о том, что Python сейчас является де-факто главным языком для пространственного анализа. Поэтому R-сообществу нужно больше гео-пакетов 📦 и т. д.

Полез проверять эту гипотезу и оказалось, что аналитики на этот счёт очень мало! Да, есть глобальные тренды языков программирования, но без конкретики по областям. Наткнулся на API StackExchange и проверил количество вопросов, отмеченных тегами R или Python на gis.stackexchange.com за последние 10 лет.

Удивительно, но R, как оказалось, лидировал вплоть до середины 2024 года. А сейчас оба языка достигли определённого равновесия. Хотя после релиза ChatGPT 3.5 осенью 2022 мне кажется, что на Stack Exchange вообще никто не заходит и все эти оценки не показательные.

➡️➡️➡️
😀 код и данные
Please open Telegram to view this post
VIEW IN TELEGRAM
9
This media is not supported in your browser
VIEW IN TELEGRAM
#rstats

Ода rig

Все никак не могу нарадоваться rig, менеджеру версий R, хоть релиз его уже был год назад.

Наверное, главная его особенность в возможности установки разных версий R, но для меня, преданного фаната Debian👩‍💻, его преимущество — отсутствие головой боли с установкой зависимостей, ключей и того, что версия r-base в apt все еще 4.2.2

Вы только посмотрите, как быстро он ставит свежий R 4.4.3 в одну короткую команду!

rig add 4.4.3


Запустить RStudio с определенной версией:

rig rstudio 3.5.3


Запустить RStudio с версией R, что прописана в файле renv.lock:

rig rstudio <renv-lockfile> 


На windows rig еще к тому же поможет вам установить нужный rtools (нужный установится по умолчанию, а вообще можно любой).

rig system rtools add


➡️➡️➡️
😀 r-lib/rig
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩7🤗2
#rstats #ggplot2

Фух, дописал заявку на грант R Consortium, отправил коллегам на ревью. Конечно пришлось помучаться с Quarto, так как шаблон написан в нем. Все-таки для меня этот инструмент для генерации .pdf/.docx пока еще очень неоднозначный. Дебаггинг шрифтов, размеров картинок, занимает уйму времени и каждый раз я задаю себе вопрос — стоит ли оно того?

Для составления диаграммы Ганта впервые воспользовался библиотекой {ganttrify}, и это что-то, что я могу рекомендовать! В принципе, даже с дефолтными параметрами получается неплохой результат. А на вход требуется всего лишь датафрейм с датами и названиями задач.

  ganttrify::ganttrify(
project = wbw_project,
spots = wbw_spots,
by_date = TRUE,
alpha_wp = 0,
exact_date = TRUE,
month_number_label = FALSE,
mark_quarters = TRUE,
project_start_date = "2025-05",
font_family = "Inter"
)


У них так же есть и веб версия, где можно сделать диаграмму из эксель, гугл шитс или csv — https://ganttrify.europeandatajournalism.eu/

➡️➡️➡️
😀 giocomai/ganttrify
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩10🤗1
#python #rstats

Относительно недавно reticulate обновился и теперь поддерживает менеджер окружений 👩‍💻 Python uv . Очень удобно теперь вызывать какие-то небольшие зависимости, которые в R не реализованы, или реализованы хуже¹. Необходимо лишь вызвать py_require() перед импортом библиотеки.

Например, есть классная библиотека phik, которая позволяет произвести корреляционный анализ не только для числовых, но и для категориальных данных. Очень хороший инструмент для первичного знакомства с датасетом, так как может выявить взаимосвязь, даже если она нелинейна (Baak et al, 2020). Чтобы сделать базовый EDA с R-объектами:

library(reticulate)

# объявляем зависимости Python
py_require("pandas")
py_require("phik")

# импортируем Py библиотеки как обычно
pd <- import("pandas")
phik <- import("phik")

# конвертируем R датафрейм в Py датафрейм
iris_py <- r_to_py(iris[, 3:5])

# делаем анализ
iris_py$phik_matrix() |>
py_to_r() |>
dplyr::as_tibble(rownames = "var")

> # A tibble: 3 × 4
> var Petal.Length Petal.Width Species
> <chr> <dbl> <dbl> <dbl>
> 1 Petal.Length 1 0.778 0.994
> 2 Petal.Width 0.778 1 0.951
> 3 Species 0.994 0.951 1


Помимо прочего, uv теперь можно использовать ещё и во время разработки R-пакетов. Классный примерvrtility, на мой взгляд, очень элегантно и бесшовно подтягивает numpy при загрузке. Больше не нужно мучиться с настройками conda и venv, которые были необходимы, когда, например, работаешь с rgee.

➡️➡️➡️
🔗¹ Более серьёзный анализ, конечно, лучше проводить, полноценно написав на Python и обмениваясь между R и Python через .parquet или другие форматы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩7
#rstats #cran

Отличный способ прокачать свои R-скиллы — это начать контрибьютить в опен-сорс проекты (это касается любого ЯП). Как автор нескольких библиотек и расширений, я уверяю вас, что в большинстве своём разработчики будут только рады вашему вкладу (см. скрин).

Я обычно выбираю библиотеки, с которыми более или менее знаком, и либо нахожу баг, который требует исправления, либо беру issue на гитхаб, которое кажется посильным. Но сегодня увидел ресурс cranhaven.org — там есть постоянно обновляемый список пакетов CRAN ❤️, которые находятся под угрозой архивации. По-моему, это прекрасное место, чтобы начать. У многих проектов там есть проблемы всего лишь с документацией или с зависимостями в DESCRIPTION, поскольку CRAN недавно стал требовать указывать версию R ≥ 4.1, если используется встроенный пайп (ака |>).

Например, для repmis и treeClust требуется исправления ссылок в документации [1, 2], а в divvy немного поправить тесты [3]. Главное, чтобы R-CMD-Check был
Please open Telegram to view this post
VIEW IN TELEGRAM
🤗9
#nz #science #python

Ох, хороший мем на злобу дня («Это я возвращаюсь к R после рискованной попытки покорения Python»).

У моих коллег недавно вышла библиотека raster2dggs 🐍 с прекрасной задумкой — трансформация пространственных растров (спутниковых снимков, цифровых моделей рельефа и тд.) в дискретные глобальные сети (discrete global grid). На примере Uber H3 (гексагоны) они показали, как агрегируют и хранят данные в формате parquet. Занимают мало места, легко анализировать и еще иерархия ячеек присутствует, в общем, кайф. Так же вышла статья в Big Earth Data (Law & Ardo 2025), которая была выбрана редколлегией как лучшая статья месяца! С чем я их поздравляю и завидую))

Ну а дальше классическая ситуация большинства питон кода — он не запускается нигде кроме компьютера разработчиков 😋 Если у кого-то получится поставить версию с PyPI — дайте мне знать пожалуйста))) Я в итоге так и не смог ничего установить, только вспомнил подкаст Подлодки #336, там тоже прожаривали питон за это. Гость предложил фанатскую теорию, что докер стал популярным во многом из-за того, что это единственны способ запустить питон код на другом устройстве 🖥.

Хорошо, что в R есть CRAN ❤️. Он заставляет тебя написать тесты, доку и еще убедиться, что библиотека установиться из-под всех ОС и разных архитектур.

➡️➡️➡️
😀 manaakiwhenua/raster2dggs
Please open Telegram to view this post
VIEW IN TELEGRAM
🤗8🤩4😐2
Недавно вышел препринт статьи, написанной разработчиками самых популярных библиотек для геопространственного анализа на R, Python и Julia (Pebesma et al., 2025). Во введении есть классная диаграмма, которая показывает, насколько высокоуровневые либы похожи между собой на низком уровне. По сути, всё стоит на трёх китах: GDAL, GEOS, PROJ 👩‍💻👩‍💻

Пару мемов, чтобы подкрепить данный тезис 😋
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩14