我有一份调查表(是的,到目前为止我所有的问题都一样... A for loop for multiple likert graphs returns NOTHING)
现在,我正在评估每个地理区域(11个区域)的答案,我想通过for循环进行此操作。
用于制作我的图表的点赞包不会为<= 1个非NA答案绘制任何图表。所以这些都不能正常工作:
我的(假设)数据看起来像这样(-9表示不适用):
M1 M2 M3 M4 M5 M6 M7 M8 M9 group
1 1 5 5 1 2 4 4 -9 5 1
2 2 4 5 1 2 4 4 1 5 1
3 3 3 5 1 2 4 3 1 3 1
4 1 5 5 1 2 4 4 -9 5 1
5 2 4 5 1 2 4 4 1 5 2
6 1 5 5 1 2 4 4 -9 5 2
7 2 4 5 1 2 4 4 1 5 2
8 3 3 5 1 2 4 3 1 3 3
9 4 5 5 1 2 4 -9 1 3 3
10 5 5 -9 1 3 4 4 2 -9 3
11 3 3 5 1 2 4 3 1 3 3
12 4 5 5 1 2 4 -9 1 3 4
13 5 5 -9 1 3 4 4 2 -9 3
14 5 5 -9 1 3 4 4 2 -9 3
15 3 3 5 1 2 4 3 1 3 4
16 1 5 5 1 2 4 4 -9 5 4
17 2 4 5 1 2 4 4 1 5 4
18 1 5 5 1 2 4 4 -9 5 4
19 2 4 5 1 2 4 4 1 5 4
20 3 3 5 1 2 4 3 1 3 4
21 -9 -9 -9 -9 -9 -9 -9 -9 -9 5
22 1 1 1 1 1 1 1 1 1 6
这两个for循环版本不起作用:
for (i in 1:5)
for (i in unique(mydata$group))
因为:FUN(X [[i]],...)中的错误:找不到对象'pos'
我认为这是因为第5组仅包含N / As,而第6组仅包含一个样本。
因此,我需要一个通过我的for循环执行的函数,该函数仅为具有超过2行(非N / A)的i创建值。有什么想法吗?
答案 0 :(得分:1)
您可以在循环内询问是否已给出条件,即存在多于2个非N / A的行。
mydata <- read.table(text = "
M1 M2 M3 M4 M5 M6 M7 M8 M9 group
1 1 5 5 1 2 4 4 -9 5 1
2 2 4 5 1 2 4 4 1 5 1
3 3 3 5 1 2 4 3 1 3 1
4 1 5 5 1 2 4 4 -9 5 1
5 2 4 5 1 2 4 4 1 5 2
6 1 5 5 1 2 4 4 -9 5 2
7 2 4 5 1 2 4 4 1 5 2
8 3 3 5 1 2 4 3 1 3 3
9 4 5 5 1 2 4 -9 1 3 3
10 5 5 -9 1 3 4 4 2 -9 3
11 3 3 5 1 2 4 3 1 3 3
12 4 5 5 1 2 4 -9 1 3 4
13 5 5 -9 1 3 4 4 2 -9 3
14 5 5 -9 1 3 4 4 2 -9 3
15 3 3 5 1 2 4 3 1 3 4
16 1 5 5 1 2 4 4 -9 5 4
17 2 4 5 1 2 4 4 1 5 4
18 1 5 5 1 2 4 4 -9 5 4
19 2 4 5 1 2 4 4 1 5 4
20 3 3 5 1 2 4 3 1 3 4
21 -9 -9 -9 -9 -9 -9 -9 -9 -9 5
22 1 1 1 1 1 1 1 1 1 6
", header=T, na.strings="-9")
for (i in unique(mydata$group)) {
x <- mydata[mydata$group==i,]
if(sum(complete.cases(x)) > 2) { #more than 2 rows which are non-N/A?
plot(x[1:9])
}
}