group-telegram.com/stats_for_science/91
Last Update:
Основные изменения в tidyverse 2.0.0
Совсем недавно (31 октября) вышла новая версия R 4.3.2 и я обнаружила, что на домашнем ноутбуке сижу на версии R уже прошлого года, а значит пора обновиться. К тому же при подготовке лекции по tidyverse
обнаружила, что у меня не самая актуальная версия, а ведь еще в марте вышло обновление tidyverse
до 2.0.0 версии, о чем мы сегодня поговорим.
Наиболее полно описаны основные изменения в статье Mine Çetinkaya-Rundel "Teaching the tidyverse in 2023", здесь я выделю ключевые моменты.
1) lubridate
стал одним из уже 9 пакетов core tidyverse
, что для меня довольно удобно, потому что все время нужен для работы с датами и временем.
2) Немного изменился синтаксис функции dplyr::case_when()
, теперь значение по умолчанию пишется как .default =
, а не TRUE ~
, как было раньше. При этом синтаксис с TRUE
все еще работает, что радует, хотя в новых скриптах стоит переходить на новый.
3) Функции if_else()
и case_when()
перестали быть настолько строгими с пропущенными значениями, так, раньше:
# previously
df |>
mutate(
x = case_when(
~ "value 1",
~ "value 2",
~ "value 3",
TRUE ~ NA_character_
)
)
в случае использования
NA
в качестве результата выражения, необходимо было прописывать тип пропущенных значений (NA_character_
, NA_real_
и тп). Теперь это отменили, что неплохо, хотя мне казалось полезным контролировать тип пропущенных значений. Но если честно, ошибка была непонятная, в случае если не знаешь в чем дело.4) Появилась возможность прописывать группировку непосредственно в функции
summarise()
аргументом .by
. # previously
df |>
group_by(x) |>
summarize(mean(y))
Это важно, поскольку после
group_by()
+ summarise()
датафрейм остается сгруппированным, что может повлиять на дальнейшие расчеты, и иногда необходимо разгруппировать датафрейм. Теперь, если сгруппированный датафрейм не нужен в дальнейшем, то можно написать так:# now, optionally
df |>
summarize(
mean(y),
.by = x
)
Звучит неплохо, но связка
group_by
+summarise
уже настолько привычна, что отвыкать придется долго. В целом, после обновления обратная совместимость сохраняется, порадовало например, что синтаксис с
TRUE
в case_when()
не сломался.И помимо этого, в телеграме появилась возможность использовать подсветку синтаксиса для чанков с кодом с версии 4.11 для десктопа. Это очень круто, кто еще не сделал, обновите телеграм, код получается супер красивым и отформатированным. Для подсветки синтаксиса используются три бэктика ``` и название языка, далее код и три закрывающих бэктика. По умолчанию такое форматирование делает
reprex::reprex()
(про репрекс можно почитать мой пост, который не утратил актуальности).Также планирую в ближайшие две недели продолжить запись лекций по R, так что обязательно следите за новостями!
Пишите комментарии, заценили ли обновление
tidyverse
и телеграма, используете ли аргумент .by
вместо group_by()
и любые вопросы!#R #tidyverse
BY Статистика и R в науке и аналитике
Share with your friend now:
group-telegram.com/stats_for_science/91