Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to use a for-loop on column ranges for plotting without using all combination of i and j?

I am trying to print likert plots with a nested for-loop. Well, it works, but I would like the for function to not "retake" the i and j, which means I want to plot 1:5, 6:10, 11:15, and so on. But not all possible combinations of these variables.

library(likert)

for(i in c(1, 6, 11, 16)){
  for (j in c(5, 10, 15, 20)) {
    print(plot(likert(data.likert[, i:j])))
  }
} 

Any better ideas?

Here comes a data example (sorry it is a bit long):

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

data.likert <- structure(list(
  Q1 = structure(c(5L,5L, 5L, 4L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("Stimme überhaupt nicht zu", "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", "Weiß nicht/keine Angabe"), class = "factor"), 
 Q2 = structure(c(5L,5L, 5L, 4L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("Stimme überhaupt nicht zu", "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
"Weiß nicht/keine Angabe"), class = "factor"), 
Q3 = structure(c(2L, 4L, 5L, 5L, 4L, 4L, 5L, 4L, 4L, 4L), .Label = c("Stimme überhaupt nicht zu", "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
"Weiß nicht/keine Angabe"), class = "factor"), 
Q4 = structure(c(1L, 4L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 3L), .Label = c("Stimme überhaupt nicht zu", 
"Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", "Weiß nicht/keine Angabe"), class = "factor"), 
Q5 = structure(c(1L, 2L, 2L, 4L, 2L, 1L, 4L, 2L, 2L, 5L), .Label = c("Stimme überhaupt nicht zu", 
"Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
"Weiß nicht/keine Angabe"), class = "factor"), 
Q6 = structure(c(1L, 
1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L), .Label = c("Stimme überhaupt nicht zu", 
"Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
"Weiß nicht/keine Angabe"), class = "factor"), 
Q7 = structure(c(4L, 3L, 4L, 1L, 3L, NA, 2L, 2L, 2L, NA), .Label = c("Stimme überhaupt nicht zu", 
"Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", "Weiß nicht/keine Angabe"), class = "factor"), 
Q8 = structure(c(4L, 4L, 4L, 2L, 2L, 4L, 1L, NA, 2L, NA), .Label = c("Stimme überhaupt nicht zu", "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
"Weiß nicht/keine Angabe"), class = "factor"), 
Q9 = structure(c(3L, 2L, 2L, 5L, 3L, 5L, 2L, 3L, 4L, 4L), .Label = c("Stimme überhaupt nicht zu", 
 "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
 "Weiß nicht/keine Angabe"), class = "factor"), 
Q10 = structure(c(5L, 5L, 2L, 4L, 4L, 5L, 3L, 5L, 4L, 5L), .Label = c("Stimme überhaupt nicht zu", 
 "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
 "Weiß nicht/keine Angabe"), class = "factor"), 
Q11 = structure(c(5L,5L, 5L, 5L, 5L, 5L, 5L, 4L, 5L, 5L), .Label = c("Stimme überhaupt nicht zu", 
"Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
"Weiß nicht/keine Angabe"), class = "factor"), 
Q12 = structure(c(5L, 5L, 2L, 4L, 4L, 5L, 4L, 5L, 5L, 5L), .Label = c("Stimme überhaupt nicht zu", 
 "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
 "Weiß nicht/keine Angabe"), class = "factor"), 
Q13 = structure(c(5L, 5L, 4L, NA, 4L, 5L, 5L, NA, 3L, 5L), .Label = c("Stimme überhaupt nicht zu", 
 "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
 "Weiß nicht/keine Angabe"), class = "factor"), 
Q14 = structure(c(2L, 2L, 4L, 1L, 4L, 1L, 4L, 3L, 2L, 4L), .Label = c("Stimme überhaupt nicht zu", 
 "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
 "Weiß nicht/keine Angabe"), class = "factor"), 
Q15 = structure(c(1L,  1L, 4L, 2L, 2L, 1L, 2L, NA, 1L, 2L), .Label = c("Stimme überhaupt nicht zu", 
 "Stimme eher nicht zu", "Weder noch", "Stimme eher zu", "Stimme voll und ganz zu", 
 "Weiß nicht/keine Angabe"), class = "factor")), row.names = c(NA, 
 10L), class = "data.frame")

>Solution :

You could just take a single v and add four to get the second value.

for (i in c(1, 6, 11)) print(plot(likert(data.likert[, i:(i + 4)])))

Or, using lapply.

lapply(c(1, 6, 11), \(i) plot(likert(data.likert[, i:(i + 4)])))
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading