и не путайся

я бегу ...

library(data.table)
DT = CJ(id = 1, id2 = 1:3)[, .(
    d = as.IDate("2017-01-01")+1:10, v = id*10 + id2*1:10
), by=.(id, id2)]

plotDT = DT[, {
    par(mfrow = c(uniqueN(id2), 1), mar = c(2,2,.5,2))
    .SD[,{ 
        plot(d, v, type="l")
    }, by=id2]
    .(p = .(recordPlot()))
}, by=id]

x11()
plotDT[id == 1L, replayPlot(p[[1]])]

Сюжет изDT[...] верно:

Пока переигровка неверна:

В записанном участке итоговые значенияx а такжеy магически применяются ко всем трем графикам, вероятно, из-за того, как data.table обрабатывает указатели на столбцы, определенные вby= групп.

Я не совсем уверен, что понимаю, что происходит, потому что я могу изменить пример поверхностно, написавv = id2*1:10 вместоv = id*10 + id2*1:10 и - пуф - проблема исчезает.

Я хотел бы знать, (i) почему это происходит и (ii) какой простой твик я могу сделать, чтобы обойти это?

Ответы на вопрос(1)

Ваш ответ на вопрос