рдореБрдЭреЗ data.table рдореЗрдВ %like%
рдСрдкрд░реЗрдЯрд░ рдкрд╕рдВрдж рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реВрдВред PostgreSQL рдореЗрдВ ILIKE рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ рдЬрд╣рд╛рдВ __i__ рдХреЗрд╕-__рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓__ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИред
рдЖрдк рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдореЗрдВ %ilike%
рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?
рдЗрд╕реЗ data.table рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ ilike.R рдореЗрдВ рдПрдХ рдСрдкрд░реЗрдЯрд░ $ ignore.case = TRUE
%ilike%
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 рдЬрд╛рдирддрд╛ рд╣реВрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдпрд╣ рд╡реИрд╕реЗ рднреА рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рдХрд╛ рдкреНрд░рд╢реНрди рд╣реИред