在for循环中生成序列

时间:2015-10-08 07:53:07

标签: r loops for-loop

这可能已经得到解答,但我无法找到解决我具体问题的方法: 我正在寻找某种文件类型(例如.jpeg)并使用message函数向用户打印message()。但随着message我要打印一个序列。 输出应为:

1. Found filename at System time.
2. Found filename2 at System time. 

不幸的是,我的输出是:

1 Found filename at System time
2 Found filename at System time
1 Found filename2 at System time
2 Found filename2 at System time

我的代码:

library(tools)
setwd("/Users/RLearner/Desktop/TEMP")
a<-list.files(getwd(), recursive=TRUE)
for (f in a)
  for (i in 1:length(a))
    if (file_ext(f)=="jpeg")
    {
      message(paste(i, "Found", f, "-", Sys.time(), sep = " "))
    }

我做错了什么?

2 个答案:

答案 0 :(得分:4)

以下不够吗?

setwd("/Users/RLearner/Desktop/TEMP")
a <- list.files(getwd(), pattern="*jpeg$", recursive=TRUE)

out <- paste(seq_along(a), "Found", "-", a, Sys.time(), sep = " ")

修改

我只是通过message添加out来找不到解决方案。仍然需要for循环。如果有人能找到包装,请随时编辑。

for (ii in out){
  message(ii)
}

答案 1 :(得分:1)

我明白了!如果我声明一个变量i<-0然后在if语句中递增它,它就可以了:我的代码:

library(tools)
setwd("/Users/RLearner/Desktop/TEMP")
a<-list.files(getwd(), recursive=TRUE)
i<-0
for (f in a)
if (file_ext(f)=="jpeg")
{
message(paste(i+1, "Found", f, "-", Sys.time(), sep = " "))
i<-i+1
}