Size: a a a

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

2020 July 09

В

Виктор in R (язык программирования)
googleAnalyticsR::google_analytics() в описанном примере не вернет значения при котором length > 0 и с этим нельзя будет работать
Ну и надо отметить, что конечное решение было другим  if (length(data) == 0 ) {next}
источник

В

Виктор in R (язык программирования)
решения равнозначные.  nrow не лучше решит проблему чем length
источник

АК

Артём Клевцов... in R (язык программирования)
Виктор
решения равнозначные.  nrow не лучше решит проблему чем length
> NROW(NULL)
[1] 0
> NROW(list())
[1] 0

NROW довольно всеядна, при этом поркывает кейс и данных с 0-столбцов и с 0-колонок.
При работе со сторонним API можно ожидать разных странностей и лучше перестраховаться от ситуаций, когда JSON-парсер может вернуть разные по структуре и типам данные.
источник

В

Виктор in R (язык программирования)
ок. я понял в чем беда.
в чем разнице NROW и nrow
источник

В

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

В

Виктор in R (язык программирования)
nrow вернет logical(0)
NROW вернет TRUE
источник

⌨️ in R (язык программирования)
непопулярное мнение: {vctrs}::vec_size
источник

АК

Артём Клевцов... in R (язык программирования)
⌨️
непопулярное мнение: {vctrs}::vec_size
Похож на аналог length.
источник

⌨️ in R (язык программирования)
Артём Клевцов
Похож на аналог length.
Это аналог length в том смысле что он ведет себя почти предсказуемо для любых типов.
С точки зрения {vctrs}, дата фрейм это не список размера ncol, а коллекция однострочных фреймов размера nrow, поэтому условно {vctrs}::vec_size(mtcars) == nrow(mtcars), и vec_size(mtcars$hp) == length(mtcars$hp).
источник

АК

Артём Клевцов... in R (язык программирования)
⌨️
Это аналог length в том смысле что он ведет себя почти предсказуемо для любых типов.
С точки зрения {vctrs}, дата фрейм это не список размера ncol, а коллекция однострочных фреймов размера nrow, поэтому условно {vctrs}::vec_size(mtcars) == nrow(mtcars), и vec_size(mtcars$hp) == length(mtcars$hp).
Интересная подробность.
источник

⌨️ in R (язык программирования)
Артём Клевцов
Интересная подробность.
На мой взгляд {vctrs} очень крутая и нужная вещь для языка (и для пакетов) в целом, но это все почти tidyverse, и не все любят tidyverse
источник

ГД

Григорий Демин... in R (язык программирования)
⌨️
Это аналог length в том смысле что он ведет себя почти предсказуемо для любых типов.
С точки зрения {vctrs}, дата фрейм это не список размера ncol, а коллекция однострочных фреймов размера nrow, поэтому условно {vctrs}::vec_size(mtcars) == nrow(mtcars), и vec_size(mtcars$hp) == length(mtcars$hp).
Это больше похоже на аналог NROW. То есть даже в вашем описании это полная копия NROW.
источник

ГД

Григорий Демин... in R (язык программирования)
Интересно, как vec_size с матрицами ведёт
источник

АК

Артём Клевцов... in R (язык программирования)
⌨️
На мой взгляд {vctrs} очень крутая и нужная вещь для языка (и для пакетов) в целом, но это все почти tidyverse, и не все любят tidyverse
Сам по себе vctrs не имеет зависимостей, кроме rlang вроде бы, то есть вполне может использоваться нелюбителями tidyverse вроде меня. Но пока не встретил кейсов, где этот пакет реально бы пригодился.
источник

АК

Артём Клевцов... in R (язык программирования)
Артём Клевцов
Сам по себе vctrs не имеет зависимостей, кроме rlang вроде бы, то есть вполне может использоваться нелюбителями tidyverse вроде меня. Но пока не встретил кейсов, где этот пакет реально бы пригодился.
Нет, всё таки напихали туда:
Imports:   ellipsis (≥ 0.2.0), digest, glue, rlang (≥ 0.4.5)
источник

⌨️ in R (язык программирования)
Артём Клевцов
Сам по себе vctrs не имеет зависимостей, кроме rlang вроде бы, то есть вполне может использоваться нелюбителями tidyverse вроде меня. Но пока не встретил кейсов, где этот пакет реально бы пригодился.
помоему там еще {glue} и {digest}.
Я с помощью него экспериментировал с созданием новых векторных типов, которые бесшовно интегрируются потом во всю tidy-кухню.
{vctrs} позволяет создавать типы с точки зрения software engineer а не statistician, на мой субъективный взгляд.
источник

⌨️ in R (язык программирования)
Григорий Демин
Интересно, как vec_size с матрицами ведёт
> vctrs::vec_size(matrix(1:6, nrow  = 3))
# 3
источник

АК

Артём Клевцов... in R (язык программирования)
⌨️
помоему там еще {glue} и {digest}.
Я с помощью него экспериментировал с созданием новых векторных типов, которые бесшовно интегрируются потом во всю tidy-кухню.
{vctrs} позволяет создавать типы с точки зрения software engineer а не statistician, на мой субъективный взгляд.
```{vctrs} позволяет создавать типы с точки зрения software engineer а не statistician, на мой субъективный взгляд.```
Что имеется в виду здесь?
источник

ГД

Григорий Демин... in R (язык программирования)
⌨️
> vctrs::vec_size(matrix(1:6, nrow  = 3))
# 3
Да, точно как NROW
источник

⌨️ in R (язык программирования)
Артём Клевцов
```{vctrs} позволяет создавать типы с точки зрения software engineer а не statistician, на мой субъективный взгляд.```
Что имеется в виду здесь?
Я пришел в R с энтерпрайз-языков, и для меня R полон всяких костылей и нестыковок, которые наверно удобны для статистика/математика, но для обычного девелопера это сомнительно. Например, {vctrs} экспортирует свой vec_c, который корректно склеивает любые коллекции, учитывая их тип.
Если ваш кастомный тип реализует определенный набор {vctrs} - метдов, он легко интегрируется во всю инфраструктуру.
Ближайший пример - до R 4.0 конкатенация двух факторов приводила хрен пойми к чему. vec_c делает все корректно.

Есть vec_ptype2, позволяющий найти общий тип для двух объектов, vec_cast,  который приведет один тип к другому если это разрешено, а не просто срежет атрибуты или еще чего.
источник