Come ha detto Josh O'Brien. Per estendere un po 'sul bossolo di corrispondenza in R, che in realtà è possibile con le espressioni regolari (utilizzando ad esempio grep
e grepl
)
In questo caso è possibile utilizzare mapply
e grepl
come questo, a condizione che stai corrispondenza singoli caratteri:
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
bisogna essere attenti, però, perché corrisponde anche stringhe parziali come questo:
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
questo può o non può essere quello che vuoi.
Su un sidenote, se abbinate con le espressioni regolari e si vuole ignorare il caso, è anche possibile utilizzare il costrutto (?i)
per accendere corrispondenza senza bossolo e (?-i)
per disattivare senza bossolo matching:
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 Questa è un'aggiunta divertente e informativa. Se si desidera utilizzare 'grepl' e _non_ accettare le corrispondenze di sottostringa, suppongo che si possa fare' mapply (grepl, A1, C1, ignore.case = TRUE) e mapply (grepl, C1, A1, ignore.case = TRUE) ' . –
@ JoshO'Brien: Potresti davvero, ma è improbabile che quel costrutto eccella in efficienza ... ;-) –
Sì. E a prescindere dal codice del golf, è un contendente! –