co7000
co7000

Reputation: 221

How to OR Loop in R

I have a data set with 100 values and want to pick only specific items from that data set. That's how I do it right now:

df.match <- subset(df.raw.csv, value == "UC9d" | value == "UCenoM“)

It's working but I want to solve it with a loop. I tried this but I only get one match. Although I know both values are in the data set.

for (ID in c("UC9d" , "UCenoM")){df.match <- subset(df.raw.csv, value == ID)}

Any suggestions?

Upvotes: 1

Views: 64

Answers (2)

Abdur Rohman
Abdur Rohman

Reputation: 2944

An option:

df.match <- subset(df.raw.csv, value %in% c("UcenoM", "Uc9d"))

Upvotes: 1

arndtupb
arndtupb

Reputation: 62

My suggestion would be not to use loops in R:

library(dplyr)
mydata <- mutate(mydata, TOBEINCL = 0) #rename according to your data

Create a list of patterns for the match of mydata$ID (^ and $ are for exact matching):

toMatch <- c("^UC9d$", "^UCenoM$")

Use pattern matching from base R:

mydata$TOBEINCL[grep(paste(toMatch,collapse="|"), mydata$ID, ignore.case = FALSE, invert = TRUE)] <- 1

Select data:

mydataINCL <- mydata[(mydata$TOBEINCL==1) , ]
mydataINCL$ID <- factor(mydataINCL$ID) #sometimes R sticks with the old values

Upvotes: 1

Related Questions