Это связано с духом с этим вопросом, но должно быть различным в механизме.
Если вы попытаетесь кэшировать фрагмент knitr, который содержит назначение data.table :=, тогда он действует так, как будто этот фрагмент не был запущен, а более поздние фрагменты не видят влияния :=.
Любая идея, почему это так? Как knitr обнаруживает объекты, которые обновлены, а что data.table делает это смущает?
Кажется, вы можете обойти это, выполнив DT = DT[, LHS:=RHS].
Пример:
```{r}
library(data.table)
```
Data.Table Markdown
========================================================
Suppose we make a `data.table` in **R Markdown**
```{r, cache=TRUE}
DT = data.table(a = rnorm(10))
```
Then add a column using `:=`
```{r, cache=TRUE}
DT[, c:=5]
```
Then we display that in a non-cached block
```{r, cache=FALSE}
DT
```
The first time you run this, the above will show a `c` column,
from the second time onwards it will not.
Выход во втором запуске

