regex - Grepl & regular expressions not working in for loop (R) -
i trying use regular expressions , loop subset large data set. simplified example code identical in structure:
v1 <- c("cow", "bull") v2 <- c("roster") v3 <- c("lamb", "goat") animal.match <- c(v1, v2, v3) for(m in as.character(animal.match)){ animal <- subset(all.animals[,c(2,4)], grepl(paste(m, collapse = "|"), as.character(all.animals$species))) } when take out of loop , substitute v1, v2, , v3 m, subset works. however, inside of loop no data subset. want animals subset of each original regular expression vector. e.g. first iteration in loop yield columns 2 , 4 of all.animals data "cows" , "bulls".
species name (col 2) weight (col 4) bull bruce 2,400 lb cow bessie 1,600 lb i tried messing paste() function , applying each of regular expression vectors didn't seem work. , input appreciated.
given don't know dataset looks like... used corpora had has 1 column... can adapt needed:
all.animals %>% dplyr::slice( stringdist::amatch(c(v1, v2, v3), all.animals$animals, maxdist = inf) ) animals 1 cow 2 bull 3 rooster 4 lamb 5 goat > dput(all.animals) structure(list(animals = c("aardvark", "alligator", "alpaca", "antelope", "ape", "armadillo", "baboon", "badger", "bat", "bear", "beaver", "bison", "boar", "buffalo", "bull", "camel", "canary", "capybara", "cat", "chameleon", "cheetah", "chimpanzee", "chinchilla", "chipmunk", "cougar", "cow", "coyote", "crocodile", "crow", "deer", "dingo", "dog", "donkey", "dromedary", "elephant", "elk", "ewe", "ferret", "finch", "fish", "fox", "frog", "gazelle", "gila monster", "giraffe", "gnu", "goat", "gopher", "gorilla", "grizzly bear", "ground hog", "guinea pig", "hamster", "hedgehog", "hippopotamus", "hog", "horse", "hyena", "ibex", "iguana", "impala", "jackal", "jaguar", "kangaroo", "koala", "lamb", "lemur", "leopard", "lion", "lizard", "llama", "lynx", "mandrill", "marmoset", "mink", "mole", "mongoose", "monkey", "moose", "mountain goat", "mouse", "mule", "muskrat", "mustang", "mynah bird", "newt", "ocelot", "opossum", "orangutan", "oryx", "otter", "ox", "panda", "panther", "parakeet", "parrot", "pig", "platypus", "polar bear", "porcupine", "porpoise", "prairie dog", "puma", "rabbit", "raccoon", "ram", "rat", "reindeer", "reptile", "rhinoceros", "salamander", "seal", "sheep", "shrew", "silver fox", "skunk", "sloth", "snake", "squirrel", "tapir", "tiger", "toad", "turtle", "walrus", "warthog", "weasel", "whale", "wildcat", "wolf", "wolverine", "wombat", "woodchuck", "yak", "zebra", "rooster")), .names = "animals", row.names = c(na, 135l ), class = "data.frame")
Comments
Post a Comment