【发布时间】:2021-08-12 12:39:04
【问题描述】:
如果我尝试执行 R 命令:
shapiro.test(subset(GoatMerged, id == 1)$goat_pos)
然后这工作正常,我得到了正确的结果。 如果我尝试对 R 中的命令使用循环结构,则它不起作用:
for(i in 1:13)
{
shapiro.test(subset(GoatMerged, id == i)$goat_pos)
}
如果变量名具有迭代组件,则命令paste0() 会很有帮助。但是对于命令
for(i in 1:13)
{
placeholder <- paste0("id == ", i, "", sep="")
shapiro.test(subset(GoatMerged, placeholder)$goat_pos)
}
它不起作用。
为了给出一个(非最小的)reprex,这里是数据:
> GoatMerged[,c(1,3)]
id goat_pos
1 1 33
2 1 102
3 1 55
4 1 42
5 1 50
6 1 50
7 1 42
8 1 28
9 1 46
10 1 28
11 1 44
12 1 29
13 1 NA
14 2 71
15 2 79
16 2 57
17 2 88
18 2 86
19 2 78
20 2 78
21 2 51
22 2 71
23 2 59
24 2 78
25 2 69
26 2 78
27 3 50
28 3 40
29 3 52
30 3 53
31 3 55
32 3 NA
33 3 46
34 3 54
35 3 60
36 3 55
37 3 58
38 3 56
39 3 48
40 4 61
41 4 62
42 4 61
43 4 61
44 4 61
45 4 24
46 4 44
47 4 19
48 4 61
49 4 81
50 4 81
51 4 18
52 4 81
53 5 22
54 5 6
55 5 0
56 5 7
57 5 9
58 5 53
59 5 5
60 5 8
61 5 20
62 5 44
63 5 3
64 5 8
65 5 1
66 6 48
67 6 27
68 6 64
69 6 52
70 6 52
71 6 69
72 6 52
73 6 34
74 6 46
75 6 54
76 6 54
77 6 33
78 6 4
79 7 4
80 7 2
81 7 4
82 7 2
83 7 3
84 7 5
85 7 NA
86 7 5
87 7 1
88 7 2
89 7 11
90 7 3
91 7 5
92 8 28
93 8 61
94 8 53
95 8 45
96 8 47
97 8 35
98 8 37
99 8 41
100 8 40
101 8 49
102 8 31
103 8 40
104 8 28
105 9 101
106 9 99
107 9 99
108 9 83
109 9 99
110 9 102
111 9 81
112 9 102
113 9 103
114 9 98
115 9 81
116 9 81
117 9 103
在 R 命令中放置迭代器 i 的正确语法是什么?
【问题讨论】:
-
看起来是正确的,除非向量
1:13太长。您可以发布一条错误消息吗? -
你没有说什么没用,但我怀疑问题是你从来没有打印过任何东西。自动打印不会循环发生,因此请使用
print(shapiro.test(...))来查看显示的结果。或者将它们保存在列表中,稍后再打印。 -
@dy_by 感谢您指出这一点 - 是的,这是从我的数据到这里表示的错误,但谢谢! @user2554330
paste0命令引入引号,因此 shapiro 命令给出错误“requieres boolean input”。 -
?我什么都没说
paste0。