在R中为部分数组实现While循环

时间:2017-08-07 07:58:44

标签: arrays r loops while-loop

我有一个包含10,000行和2列的数组x。我进行测试,然后我想重复测试,直到测试大于7.81然后停止。这是旧代码。

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}

我现在感兴趣的是以下内容:

我想运行测试,直到它变得大于7.81,但我想以不同的方式访问我的数组x。在第一个例子中,我想只使用数组x的前6,000行。因此,我希望将数组的条目增加50.例如,第二次迭代我想使用第50行直到6050,第3行x [100:6100],第4次[150:6150],依此类推。

1 个答案:

答案 0 :(得分:1)

我认为这可以满足您的需求。请注意,为了在每次迭代中拥有6,000行,在第二次迭代中应该有51到6,500行,而不是50到6,050行。

print(paste0(i*50+1," to ", 6000+i*50, ", number of entries: ", 6000+i*50-(i*50+1)+1 ))

您可以在循环中添加此行以验证:

[1] "1 to 6000, number of entries: 6000"
[1] "51 to 6050, number of entries: 6000"
[1] "101 to 6100, number of entries: 6000"
[1] "151 to 6150, number of entries: 6000"
[1] "201 to 6200, number of entries: 6000"

输出:

path = (char*)malloc(strlen(dir)+strlen(filename));

希望这有帮助!