x=matrix(0)
test <- vector(mode="numeric", length=196)
for(i in 1:196){
x=c[c(1:(200+i*50)),]
ts=BiCopGofTest(x[,1], x[,2], 1, par = 0.6 ,method="white",max.df = 30, B = 0, obj = NULL)
test[i]=ts$statistic}
plot(test, type='l')
我有矩阵c,它有10,000行和2列。我拿了前200行矩阵c,我计算了测试的值。每次我将行数增加50并且我正在计算测试。这就是上面代码中的内容。
我现在要做的是以下内容。我想重复相同的过程,但是当测试大于7.81时,我想停止并返回数组x。我想稍后使用该数组,因此存储它非常重要。我应该使用IF语句还是WHILE循环?任何帮助将受到高度赞赏。
答案 0 :(得分:1)
请注意,通过执行
x=c[c(1:(200+i*50)),]
在你的循环中,你覆盖了x,你就失去了原始矩阵。此外,您的子集语句并不正确。您应该创建一个新变量,它保存循环中的行子集。您可以执行以下操作:
x=matrix(runif(10000*2,0,1),10000,2)
test <- vector(mode="numeric", length=196)
i=0
while(max(test)<7.81 & 200+i*50<=nrow(x) )
{
y = x[seq(1,200+i*50),] # y contains the first 200+i*50 rows of x
ts= runif(1,1,7.9) # random test statistic, enter yours here.
test[i]= sum(ts)
i=i+1
}
plot(test, type='l')
这将继续循环,直到:
请注意,我没有包含BiCopGofTest
的软件包,所以我只使用runif作为我的测试统计信息;)
希望这有帮助!