adding reproducible code as suggested by answers
Qs<-paste0("Q2_", 1:18)
set.seed(15)
maindata <- data.frame(ID=1:5)
for(q in Qs) {
    maindata[,q] <- sample(1:20,5,replace=T)
} 
I have below code. Is their a better to achieve the output without writing each line? If i thought of writing the for loop for iterating over questions 1 to 18 but felt that for loop might not be too efficient...
  ifelse(maindata$Q2_1  > 2 & maindata$Q2_1< 11 & !is.na(maindata$Q2_1), 1, 0 )+
  ifelse(maindata$Q2_2  > 2 & maindata$Q2_2< 11 & !is.na(maindata$Q2_2), 1, 0)+
  ifelse(maindata$Q2_3  > 2 & maindata$Q2_3< 11 & !is.na(maindata$Q2_3), 1, 0)+
  ifelse(maindata$Q2_4  > 2 & maindata$Q2_4< 11 & !is.na(maindata$Q2_4), 1, 0)+
  ifelse(maindata$Q2_5  > 2 & maindata$Q2_5< 11 & !is.na(maindata$Q2_5), 1, 0)+
  ifelse(maindata$Q2_6  > 2 & maindata$Q2_6< 11 & !is.na(maindata$Q2_6), 1, 0)+
  ifelse(maindata$Q2_7  > 2 & maindata$Q2_7< 11 & !is.na(maindata$Q2_7), 1, 0)+
  ifelse(maindata$Q2_8  > 2 & maindata$Q2_8< 11 & !is.na(maindata$Q2_8), 1, 0)+
  ifelse(maindata$Q2_9  > 2 & maindata$Q2_9< 11 & !is.na(maindata$Q2_9), 1, 0)+
  ifelse(maindata$Q2_10  > 2 & maindata$Q2_10< 11 & !is.na(maindata$Q2_10), 1, 0)+
  ifelse(maindata$Q2_11  > 2 & maindata$Q2_11< 11 & !is.na(maindata$Q2_11), 1, 0)+
  ifelse(maindata$Q2_12  > 2 & maindata$Q2_12< 11 & !is.na(maindata$Q2_12), 1, 0)+
  ifelse(maindata$Q2_13  > 2 & maindata$Q2_13< 11 & !is.na(maindata$Q2_13), 1, 0)+
  ifelse(maindata$Q2_14  > 2 & maindata$Q2_14< 11 & !is.na(maindata$Q2_14), 1, 0)+
  ifelse(maindata$Q2_15  > 2 & maindata$Q2_15< 11 & !is.na(maindata$Q2_15), 1, 0)+
  ifelse(maindata$Q2_16  > 2 & maindata$Q2_16< 11 & !is.na(maindata$Q2_16), 1, 0)+
  ifelse(maindata$Q2_17  > 2 & maindata$Q2_17< 11 & !is.na(maindata$Q2_17), 1, 0)+
  ifelse(maindata$Q2_18  > 2 & maindata$Q2_18< 11 & !is.na(maindata$Q2_18), 1, 0)
 
    