ΠΠ½Π΅ ΠΎΡΠ΅Π½Ρ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ %like%
Π² data.table, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ ΠΏΡΠΈΠ²ΡΠΊ ΠΊ SQL-Π·Π°ΠΏΡΠΎΡΠ°ΠΌ. Π PostgreSQL ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΎΠΏΡΠΈΡ ILIKE , Π³Π΄Π΅ __i__ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ΅Π³ΠΈΡΡΡ-__Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°__.
Π§ΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ %ilike%
Π² data.table?
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎ Π² data.table, Ρ Π±Ρ ΡΠΎΠ·Π΄Π°Π» ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ %ilike%
Π² ilike.R Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ like.R, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ignore.case = TRUE
ΠΊ Π²ΡΠ·ΠΎΠ²Π°ΠΌ grep()
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ilike <- function(vector, pattern)
{
# Intended for use with a data.table 'where'
# Don't use * or % like SQL's like. Uses regexpr syntax - more powerful.
if (is.factor(vector)) {
as.integer(vector) %in% grep(pattern,levels(vector), ignore.case = TRUE)
} else {
# most usually character, but integer and numerics will be silently coerced by grepl
grepl(pattern,vector, ignore.case = TRUE)
}
# returns 'logical' so can be combined with other where clauses.
}
"%ilike%" = ilike
Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
require(data.table)
cars = data.table(cars = rownames(mtcars), mtcars)
cars[ cars %like% 'fiat' ] # no case-insensitive search possible
cars[ grep('fiat', cars, ignore.case = TRUE) ] # using comparably long grep
cars[ cars %ilike% 'fiat' ] # the new %ilike%
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π³ (?i)
:
cars[cars %like% '(?i)fiat']
ΠΡΠ°Π²Π΄Π°, ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½Π΅ Π·Π½Π°Π» ΠΎ ΡΠ°ΠΊΠΎΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ %ilike%
ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΡΠΌ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π·Π½Π°Ρ PostgreSQL. Π ΡΠ΅Π»ΠΎΠΌ, ΡΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
@andreasLD Π΅ΡΠ΅ ΡΠ°Π· ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅. ΠΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Ρ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ°ΠΌ, Π½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π·Π°ΠΊΡΡΡΠΎ Π² # 3333 ΠΈ # 3552.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠ°Π²Π΄Π°, ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½Π΅ Π·Π½Π°Π» ΠΎ ΡΠ°ΠΊΠΎΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅
%ilike%
ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΡΠΌ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π·Π½Π°Ρ PostgreSQL. Π ΡΠ΅Π»ΠΎΠΌ, ΡΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.