Π― Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΡΡΠΎ DT[TRUE]
- ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΊΠΎΠΏΠΈΡ. ΠΌΠ΅Π»ΠΊΠ°Ρ ΠΊΠΎΠΏΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ°Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @ renkun-ken Π·Π° Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π² # 3214 ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ Π½ΠΈΠΌ # 2254.
Π v1.11.8 ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΡΠΎ:
DT = data.table(id = 1:5, key="id")
DT1 = DT[TRUE]
key(DT1)
[1] "id"
DT1[3, id:=6L]
key(DT1)
# NULL # correct
DT$id
# [1] 1 2 6 4 5 # should be 1:5
key(DT)
# [1] "id" # invalid key
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ DT[TRUE]
, iiuc, ΠΊΠΎΡΠΎΡΡΠ΅, Π½Π°Π΄Π΅ΡΡΡ, Π»ΡΠ΄ΠΈ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΠΈ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈΡΡ ?! Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° @ renkun-ken, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ΅Π»ΠΊΡΡ ΠΊΠΎΠΏΠΈΡ, Π° Π½Π΅ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ²!
ΠΠΎΠ²ΡΠΉ ΡΠ΅ΡΡ 1542.08 Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² PR # 2313, Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ.
ΠΠ°, setkey, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΌΠ΅Π»ΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΌΠΈ ΡΡΠΎΠ»Π±ΡΡ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ.
ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΊΠΎΠΏΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ dt[TRUE]
ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½Π°.
Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ². ΠΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ @renkun-ken.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π·Π΄Π΅ΡΡ: https://github.com/Rdatatable/data.table/issues/3214#issuecomment -462490046
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
DT = data.table(a=c(1,2), b=c("b","a"))
address(DT)
address(DT[])
address(DT[, .SD])
address(DT[TRUE])
sapply(DT, address)
sapply(DT[], address)
sapply(DT[, .SD], address)
sapply(DT[TRUE], address)
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°, setkey, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΌΠ΅Π»ΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΌΠΈ ΡΡΠΎΠ»Π±ΡΡ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ.