Coś naprawdę dziwnego dzieje się tutaj. W poniższym kodzie utworzę zmienną o nazwie temp
. Muszę zadzwonić dwa razy, zanim zobaczę, co to jest. Na przykład. Za pierwszym razem, gdy to nazywam, konsola nic nie pokazuje. Za drugim razem pokazuje, że jest. Czy ktoś może mi pomóc zrozumieć, co tu się dzieje?Czy trzeba wywołać zmienną dwa razy przed obliczeniem?
library(magrittr)
library(data.table)
myDT <- as.data.table(mtcars)
temp <-
myDT %>%
melt(id.vars = c('cyl', 'mpg', 'hp'),
measure.vars = c('vs','am','gear','carb'),
variable.name = 'Data') %>%
extract(value > 0) %>%
extract(, value := NULL)
Co moja konsola robi (pierwsza rozmowa nic nie robi):
> temp
> temp
cyl mpg hp Data
1: 4 22.8 93 vs
2: 6 21.4 110 vs
3: 6 18.1 105 vs
4: 4 24.4 62 vs
5: 4 22.8 95 vs
...
...
Widzę to też w RStudio i Rterm (R w wersji 3.2.2 (2015-08-14) Platforma: x86_64-W64-mingw32/64 (64- bit); data.table_1.9.6). 'print.data.frame (temp)' działa najpierw. – jbaums
Zawsze zauważyłem to po wywołaniu ': =' lub 'set()' w 'data.table' – tospig
Jestem pewien, że widziałem to wcześniej jako znane zachowanie z data.table. Istnieje duplikat na SO gdzieś, prawdopodobnie jeden z guru data.table będzie wiedział, gdzie on jest. – joran