Size: a a a

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

2020 October 27

PU

Philipp Upravitelev in R (язык программирования)
у меня так было как-то с dsm, когда в результате обработки прочитанного файла получалась пустая таблица
источник

АК

Артём Клевцов... in R (язык программирования)
Philipp Upravitelev
вот, смотри
> tmp <- list(
+   data.table(v1 = 1, v2 = 'a'),
+   data.table(),
+   data.table(v1 = 3, v2 = 'c')
+ )
> rbindlist(tmp)
  v1 v2
1:  1  a
2:  3  c
Ожидаемое поведение?
источник

PU

Philipp Upravitelev in R (язык программирования)
я не уверен, что это хорошее поведение
как минимум, можно было бы сообщить, что максимальный idcol в результате не равен длине входного списка
источник

PU

Philipp Upravitelev in R (язык программирования)
повторяю, я таким образом пропустил некорректную обработку
такое поведение ожидаемо, если у меня один из подсписков ожидаемо пустой
но ведь это совсем необязательно так
источник

АК

Артём Клевцов... in R (язык программирования)
Тогда такое надо делать только в случае указания idcol, а не по умолчанию.
источник

АК

Артём Клевцов... in R (язык программирования)
Типо такого:
> rbindlist(list(data.table(a = 1, b = "a"), data.table(), data.table(a = 2, b = "b")), idcol="v")
  v a b
1: 1 1 a
2: 2 NA NA
3: 3 2 b
источник

PU

Philipp Upravitelev in R (язык программирования)
хз, я бы отдельным варнингом делал, наверное, а не привязанным к idcol
источник

PU

Philipp Upravitelev in R (язык программирования)
потому что в рабочем процессе idcol бесполезная фича почти, ее потом все равно удалять придется
источник

АК

Артём Клевцов... in R (язык программирования)
источник

АК

Артём Клевцов... in R (язык программирования)
Philipp Upravitelev
потому что в рабочем процессе idcol бесполезная фича почти, ее потом все равно удалять придется
Я постоянно пользуюсь, через именование списков.
источник

PU

Philipp Upravitelev in R (язык программирования)
да, похоже на этот реквест

а я почти никогда, так как в основном это связка lapply + rbindlist, и названия списков мне не всегда там нужны
источник

АК

Артём Клевцов... in R (язык программирования)
Так вот через именование списков как раз и решается проблема с поисков «утерянных» строк. Поэтому я никогда не встречался с подобной проблемой, ибо всегда контролирую содержимые каким-то ключом.
источник

АК

Артём Клевцов... in R (язык программирования)
С другой стороны, приведённая ссылка содержит только один полезный комментарий от одного и разработчиков и ничем в итоге не разрешился.
источник

АК

Артём Клевцов... in R (язык программирования)
Думается, надо иметь веский повод, чтобы поднимать закрытый issue повторно.
источник

PU

Philipp Upravitelev in R (язык программирования)
ну так там все же речь про "а давайте добавим пустую строку", в то время как rbindlist собирает таблицы, то есть, немного неконсистентная логика получается
что в последнем комменте и проговаривается.
я же предлагаю не пустую строку добавлять, а варнинг выводить, что элементы 2, 3 и 5 списка XX - пустые
источник

АК

Артём Клевцов... in R (язык программирования)
Это, думаю, можно и правильно. Только как будет выглядеть варнинг при утере 100500 строк?
источник

АК

Артём Клевцов... in R (язык программирования)
Просто писать, что «где-то шо-то утекло»?
источник

a

aGricolaMZ in R (язык программирования)
Артём Клевцов
Это, думаю, можно и правильно. Только как будет выглядеть варнинг при утере 100500 строк?
он будет выглядеть, у Вас больше 50 ворнингов, если хотите посмотреть наберите warnings()

В смысле это не желаемое поведение, а уже есть в R
источник

PU

Philipp Upravitelev in R (язык программирования)
это уже варианты, да
можно, как Гарик предлагает, просто делать варнинги и если их убдет много, они сожмутся
можно просто списком выкидывать. или просто "у вас есть дырки"
источник

АК

Артём Клевцов... in R (язык программирования)
aGricolaMZ
он будет выглядеть, у Вас больше 50 ворнингов, если хотите посмотреть наберите warnings()

В смысле это не желаемое поведение, а уже есть в R
Это понятно, но для пользователя это мало полезно, имхо. Как он сможет их собрать и использовать в работе?
В этом плане в пакете readr сделано грамотно, по моему мнению. При проблемах в чтении файла все кейсы собирается в атрибут и дописываются в объект, чтобы пользователь мог с ними работать.
источник