#
Minimal reproducible example
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ 1.11.8 рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдВрд╕реНрдХрд░рдг 1.12.0 рдореЗрдВ data.table
рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд░рд╣рд╛ рд╣реИред рдЯреАрдПрд▓; рдбреАрдЖрд░
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ unique.data.table()
рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЙрд▓рдо рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдЬреИрд╕реЗ рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
uptasticsearch рдХреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рд╣рдорд╛рд░реЗ рдХреЛрдб рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕реВрдЪрдирд╛ рджреА рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
Forderv рдореЗрдВ рддреНрд░реБрдЯрд┐ (x, by = by, Sort = FALSE, retGrp = TRUE):
by= (2) рдХрд╛ рдХреЙрд▓рдо 2 'рд╕реВрдЪреА' рдЯрд╛рдЗрдк рд╣реИ, рдЕрднреА рддрдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ
рдЖрдЬ рд░рд╛рдд рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕реНрд░реЛрдд рдорд┐рд▓рд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ unique()
рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдорд╛рдиреВрдВрдЧрд╛ред
1.12.0 рдХреЛ:
someDT <- data.table::data.table(
col1 = 1:2,
col2 = list(list(TRUE, FALSE), list(FALSE, TRUE))
)
unique(someDT)
рддреНрд░реБрдЯрд┐ рдЙрдард╛рддрд╛ рд╣реИ
Forderv рдореЗрдВ рддреНрд░реБрдЯрд┐ (x, by = by, Sort = FALSE, retGrp = TRUE):
by= (2) рдХрд╛ рдХреЙрд▓рдо 2 'рд╕реВрдЪреА' рдЯрд╛рдЗрдк рд╣реИ, рдЕрднреА рддрдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ
рдкрд┐рдЫрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЪрд▓рд╛рдпрд╛:
Rscript -e "remove.packages('data.table')"
wget http://cran.rstudio.com/src/contrib/Archive/data.table/data.table_1.11.8.tar.gz
R CMD INSTALL data.table_1.11.8.tar.gz
рдПрдХ рдмрд╛рд░ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ v 1.11.8 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛, рддреЛ рдореИрдВрдиреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП R рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛
someDT <- data.table::data.table(
col1 = 1:2,
col2 = list(list(TRUE, FALSE), list(FALSE, TRUE))
)
unique(someDT)
рдЕрдкреЗрдХреНрд╖рд┐рдд рдФрд░ рд░рд┐рдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
col1 col2
1: 1 <list>
2: 2 <list>
рддреЛ рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП Unique.data.table() рдХреЗ рд▓рд┐рдП рджреЛрд╖ рдореЗрдВ рдЧрдпрд╛ рдерд╛ рдХрд┐ . рдмрджрд▓рд╛ рд╣реБрдЖред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 1.11.8 рдФрд░ рдЕрдм рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ forderv()
рдХреЗ рджреЛрд╖ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред
рдореБрдЭреЗ forderv() рдХреЗ рджреЛрд╖ рдореЗрдВ рдХреБрдЫ рднреА рд╕рд╛рд░реНрдердХ рдирд╣реАрдВ рд▓рдЧрд╛ред
рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдЪреАрдЬрд╝ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ ... "рдЕрднреА рддрдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ" рдкрд╛рда рдХреА рдЦреЛрдЬ (рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕реЗ)ред рдЗрд╕рдиреЗ рдореБрдЭреЗ forder.c
рддрдХ рдкрд╣реБрдБрдЪрд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рджреЛрд╖ рдиреЗ рдореБрдЭреЗ #3124 рддрдХ рдкрд╣реБрдБрдЪрд╛ рджрд┐рдпрд╛ред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рдкреАрдЖрд░ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд рд╣реИред рдкреАрдЖрд░ рдкрд░ рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИ рдпрд╛ рдПрдХ рдЬреНрдЮрд╛рдд рдкреНрд░рддрд┐рдЧрдорди рд╣реИ рдЬрд┐рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ data.table
рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
#
Output of sessionInfo()
рдЖрд░ рд╕рдВрд╕реНрдХрд░рдг 3.5.0 (2018-04-23)
рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо: x86_64-Apple-darwin15.6.0 (64-рдмрд┐рдЯ)
рдХреЗ рддрд╣рдд рдЪрд▓ рд░рд╣рд╛ рд╣реИ: macOS рд╣рд╛рдИ рд╕рд┐рдПрд░рд╛ 10.13.6
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЙрддреНрдкрд╛рдж: рдбрд┐рдлрд╝реЙрд▓реНрдЯ
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
рд▓реИрдкреИрдХ: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
рд╕реНрдерд╛рди:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
рд╕рдВрд▓рдЧреНрди рдЖрдзрд╛рд░ рдкреИрдХреЗрдЬ:
[1] рдЖрдБрдХрдбрд╝реЗ рдЧреНрд░рд╛рдлрд╝рд┐рдХреНрд╕ рдЬреАрдЖрд░рдбрд┐рд╡рд╛рдЗрд╕ рдпреВрдЯрд┐рд▓реНрд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдердбреНрд╕ рдмреЗрд╕
рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдФрд░ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ):
[1] рдХрдВрдкрд╛рдЗрд▓рд░_3.5.0 рдЯреВрд▓реНрд╕_3.5.0 yaml_2.2.0 рдбреЗрдЯрд╛.рдЯреЗрдмрд▓_1.12.0
рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдзрдиреНрдпрд╡рд╛рдж @jameslamb! 1.11.8 рдореЗрдВ, рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓рддреА рд╣реИ рдпрджрд┐ list
рдХреЙрд▓рдо рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
# with data.table 1.11.8 :
DT = data.table(
col1 = c(1,1),
col2 = list(list(TRUE, FALSE), list(FALSE, TRUE))
)
unique(DT)
Error in forderv(x, by = by, sort = FALSE, retGrp = TRUE) :
Column 2 of 'by' (2) is type 'list', not yet supported
рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВрдиреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП col1
рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рддрд╛рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП col2
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред
v1.12.0+ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдХреЙрд▓рдо рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЪреЗрдХ рдЕрдк рдХреЛ рд╕рд╛рдордиреЗ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЪреАрдЬреЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред
рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ list
рдХреЙрд▓рдо рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдХреБрдЫ рдХреЙрд▓рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП by=
рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рд╢рд╛рдпрдж)ред рдЪреВрдВрдХрд┐ list
рдХреЙрд▓рдо рдкрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╡реИрд╕реЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдмрдЬрд╛рдп рдмрд╛рдж рдореЗрдВ рдЕрдЪрд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдирд╛ рдЬрдм рдЧреИрд░- list
рдореЗрдВ рдбреБрдкреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ
> unique(DT, by="col1")
col1 col2
1: 1 <list>
>
рдореИрдВ рд╕рдорд╛рдЪрд╛рд░ рдореЗрдВ рдХреБрдЫ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдПрдХ рд╕реБрдЭрд╛рд╡ рдЬреЛрдбрд╝реВрдВрдЧрд╛...
@mattdowle рдЖрд╣ рдареАрдХ рд╣реИ, рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ! рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!