Oppure utilizzare fixed = TRUE
se si desidera far corrispondere stringa effettiva (regex
lessly):
v <- sample(c("nitrogen", "potassium", "hidrogen"), size = 100, replace = TRUE, prob = c(.8, .1, .1))
grep("nitrogen", v, fixed = TRUE)
# [1] 3 4 5 6 7 8 9 11 12 13 14 16 19 20 21 22 23 24 25
# [20] 26 27 29 31 32 35 36 38 39 40 41 43 44 46 47 48 49 50 51
# [39] 52 53 54 56 57 60 61 62 65 66 67 69 70 71 72 73 74 75 76
# [58] 78 79 80 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 97
# [77] 98 99 100
Boh sui problemi di velocità, mi piace provare cose e sostengono che l'approccio a è più veloce di metodo B, ma in teoria, almeno dalla mia esperienza, indicizzazione/operatori binari dovrebbe essere il più veloce, in modo da votare per @ Dason di approccio. Si noti inoltre che regex
es sono sempre più lento di fixed = TRUE
grep
ing.
Un po 'la prova è attaccato sotto. Si noti che questo è un test zoppo, e system.time
dovrebbe essere messo dentro replicate
per ottenere (altri) differenze precisi, si dovrebbe prendere valori anomali in un account, ecc Ma certamente questo dimostra che si dovrebbe usare which
! =)
(a0 <- system.time(replicate(1e5, grep("^nitrogen$", v))))
# user system elapsed
# 5.700 0.023 5.724
(a1 <- system.time(replicate(1e5, grep("nitrogen", v, fixed = TRUE))))
# user system elapsed
# 1.147 0.020 1.168
(a2 <- system.time(replicate(1e5, which(v == "nitrogen"))))
# user system elapsed
# 1.013 0.020 1.033
Quindi si desidera solo l'indice/gli indici dei valori esattamente uguali a "azoto"? Does 'which (varnames ==" azogen ")' ti dà quello che vuoi? – Dason
Grazie mille che è esattamente ciò di cui ho bisogno. – sabsirro
Dason: puoi rendere il tuo commento una risposta in modo che Sabsirro possa accettare? –