169 похожих чатов

Добрый вечер. Подскажите, пожалуйста, почему вдруг код с data.table отработал

неожиданным для меня образом?

dt <- data.table(a=rep(1:3,7), b=rep(1:7,3), c= rep(c('a', 'b','c'), 10))
dt[,ind:=a>=b]
вот это выдает неожиданный результат
dt[,.(iii=sum(a>=b)), by=.(a, b, c)]
а вот это-то, что я хотел: сколько раз в каждой группе выполняется условие соотношение элементов в данной группе
dt[,.(iii=sum(ind)), by=.(a, b, c)]

Мне казалось, что первое- это вариант второго, без промежуточной переменной. но нет.

4 ответов

10 просмотров

dt[, .SD[a>=b, .N], by = .(a, b, c)]

смотрите, что получается > dt[a == 1 & b == 1 & c == 'a'] a b c ind 1: 1 1 a TRUE 2: 1 1 a TRUE > dt[a == 1 & b == 1 & c == 'a', sum(a >= b), by = .(a, b, c)] a b c V1 1: 1 1 a 1 > dt[a == 1 & b == 1 & c == 'a', sum(ind), by = .(a, b, c)] a b c V1 1: 1 1 a 2 на сочетание групп у нас две строки. во втором случае мы получаем сумму c(TRUE, TRUE) а в первом - судя по всему происходит сумма двух логических утверждений, sum(TRUE & TRUE)

Philipp Upravitelev
смотрите, что получается > dt[a == 1 & b == 1 & c ...

если убрать суммирование, тоже не работает dt[a == 1 & b == 1 & c == 'a', a >= b, by = .(a, b, c)]

Andrey
dt[, .SD[a>=b, .N], by = .(a, b, c)]

так что есть здесь a и b на самом деле подтягиваются из полной таблицы, а не из .SD

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта