Data.table: DT [TRUE] ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 13 Π΄Π΅ΠΊ. 2018  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Rdatatable/data.table

Π― Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π», Ρ‡Ρ‚ΠΎ DT[TRUE] - это способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ копию. мСлкая копия ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ пользования. Бпасибо @ renkun-ken Π·Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этого Π² # 3214 ΠΈ связанном с Π½ΠΈΠΌ # 2254.

  • [x] # 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, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… столбцов Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ΅Π»ΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сами столбцы Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ВсС 4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”Π°, 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)
Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ