Como dijo Josh O'Brien. Para ampliar un poco en juego sin vaina en R, que en realidad es posible con expresiones regulares (por ejemplo, utilizando grep
y grepl
)
En este caso se puede utilizar mapply
y grepl
como este, siempre y cuando estés a juego caracteres individuales:
A1 <- c("a", "A", "a", "a", "A", "A", "a")
B1 <- c(rep("a", length(A1)))
mapply(grepl,A1,B1,ignore.case=TRUE)
# a A a a A A a
# TRUE TRUE TRUE TRUE TRUE TRUE TRUE
Tienes que tener cuidado sin embargo, debido a que también coincide con cadenas parciales de esta manera:
C1 <- rep('ab',length(A1))
mapply(grepl,A1,C1,ignore.case=TRUE)
# a A a a A A a
# TRUE TRUE TRUE TRUE TRUE TRUE TRUE
esto puede o no puede ser lo que quiera.
En una nota, si coinciden con las expresiones regulares y desea ignorar el caso, también se puede utilizar el constructo (?i)
para activar el juego sin vaina y (?-i)
para apagar sin vaina juego:
D1 <- c('abc','aBc','Abc','ABc','aBC')
grepl('a(?i)bc',D1) # caseless matching on B and C
# [1] TRUE TRUE FALSE FALSE TRUE
grepl('a(?i)b(?-i)c',D1) # caseless matching only on B
# [1] TRUE TRUE FALSE FALSE FALSE
+1 Esa es una adición divertida e informativa. Si quiere usar 'grepl' y _not_ accept substring matches, supongo que podría hacer' mapply (grepl, A1, C1, ignore.case = TRUE) & mapply (grepl, C1, A1, ignore.case = TRUE) ' . –
@ JoshO'Brien: De hecho, podrías, pero es poco probable que esa construcción sobresalga en eficiencia ... ;-) –
Sí. Y en lo que sea opuesto al código de golf, ¡es un contendiente! –