表达式在for循环中计算的R次数

Sat*_*ish 4 r

list.files('dir_path')在for循环中的计算次数是多少?它是否等于目录中存在的文件数?我们如何验证它?

for (infile in list.files('dir_path')){
     #doSomething()
}
Run Code Online (Sandbox Code Playgroud)

我是否应该首先创建一个变量然后将其传递给for循环?

例如:

selected_files = list.files('dir_path')

for (infile in selected_files){
         #doSomething()
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

DGK*_*son 6

list.files只有在你提出的for循环中使用它时才会被评估一次.测试这个的最简单方法是将调用包装到list.files另一个函数调用中,如下所示:

f <- function() { print("Calling f"); list.files() }
Run Code Online (Sandbox Code Playgroud)

并在for循环中使用它:

for (infile in f())
{
    print(infile)
}
Run Code Online (Sandbox Code Playgroud)