我正在嘗試使用嵌套的 for 回圈列印李克特圖。嗯,它有效,但我希望for函式不要“重新獲取” iand j,這意味著我想繪制 1:5、6:10、11:15 等等。但并非這些變數的所有可能組合。
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])))
}
}
有什么更好的想法嗎?
下面是一個資料示例(抱歉有點長):
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")
uj5u.com熱心網友回復:
您可以只取一個v并添加四個以獲得第二個值。
for (i in c(1, 6, 11)) print(plot(likert(data.likert[, i:(i 4)])))
或者,使用lapply.
lapply(c(1, 6, 11), \(i) plot(likert(data.likert[, i:(i 4)])))
uj5u.com熱心網友回復:
如果我們需要從對應元素中取出序列,使用 Map
Map(function(i, j) plot(likert(data.likert[, i:j])),
c(1, 6, 11, 16), c(5, 10, 15, 20))
注意:在 OP 的dput資料集中,只有 15 列(假設它只是原始資料的一個子集)
或者在for回圈中相同的是創建兩個vector序列并遍歷其中一個向量的序列,根據序列索引獲取向量值,回傳序列 ( :),提取列,應用likert和plot
v1 <- c(1, 6, 11, 16)
v2 <- c(5, 10, 15, 20)
for(i in seq_along(v1)) {
print(plot(likert(data.likert[, v1[i]:v2[i])))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/391168.html
