我有一个带有范围的问题函数,我需要为给定范围执行while循环。下面是我写的伪代码。在这里,我打算从排序列表中读取文件,start = 4和end = 8表示读取文件4到8。
readFiles<-function(start,end){
i = start
while(i<end){
#do something
i += 1
}
}
我需要知道如何在R中执行此操作。任何帮助表示赞赏。
答案 0 :(得分:3)
你可以试试这个:
readFiles<-function(start,end){
for (i in start:end){
print(i) # this is an example, here you put the code to read the file
# it just allows you to see that the index starts at 4 and ends at 8
}
}
readFiles(4,8)
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
正如mra68所指出的那样,如果您不希望这些函数在end>start
执行此操作时可以执行此操作:
readFiles<-function(start,end){
if (start<=end){
for (i in start:end){
print(i)
}
}
}
它不会对readFiles(8,4)
做任何事情。使用print(i)
作为循环中的函数,如果while
稍微快于start<=end
,如果end>start
则更快:
Unit: microseconds
expr min lq mean median uq max neval cld
readFiles(1, 10) 591.437 603.1610 668.4673 610.6850 642.007 1460.044 100 a
readFiles2(1, 10) 548.041 559.2405 640.9673 574.6385 631.333 2278.605 100 a
Unit: microseconds
expr min lq mean median uq max neval cld
readFiles(10, 1) 1.75 1.751 2.47508 2.10 2.101 23.098 100 b
readFiles2(10, 1) 1.40 1.401 1.72613 1.75 1.751 6.300 100 a
此处,readFiles2
是if ... for
解决方案,readFiles
是while
解决方案。