и не путайся
я бегу ...
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) какой простой твик я могу сделать, чтобы обойти это?