R中的if()语句或while()循环

吉娜
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')

我有10,000行2列的矩阵c。我获取了矩阵c的前200行,并计算了测试的值。每次我将行数增加50并计算测试时。这就是上面的代码中写的。

我现在想做的是以下内容。我想重复相同的过程,但是当测试大于7.81时,我想停止并返回数组x。我想稍后使用该数组,因此存储它很重要。我应该使用IF语句还是WHILE循环?任何帮助将不胜感激。

弗洛里安

注意,这样做

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')

这将继续您的循环,直到:

  • x中没有其他行
  • 测试统计大于7.81

请注意,我没有包含的软件包BiCopGofTest,所以我只是使用runif作为我的测试统计信息;)

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章