2015-10-08 69 views
2

这可能已被回答,但找不到解决我的特定问题的方法: 我正在寻找某种文件类型(例如.jpeg)并使用message打印给用户功能message()。但随着message我想打印一个序列。 输出应为:for循环中生成序列

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 = " ")) 
    } 

我在做什么错?

回答

4

以下不够?

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

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

编辑

我无法找到一个解决方案通过简单地用out饲料message。仍需要一个for循环。如果有人可以找到包装,请随时编辑。

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

感谢@Pascal。但我想使用'message'函数并显示给用户。代码的作品,但当我用'消息'包装它不起作用:(
这个小代码将成为我的很长的代码的一部分,它显示消息给用户在某些点。我已经重新编辑我的主要问题并且把重点放在'message'上 – MaxPD

+0

非常感谢你的时间@Pascal我已经发布了一个解决方案,我已经使用传统的方式完成了它,现在使用1 for循环, – MaxPD

+0

我的解决方案中也有一个循环。 –

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 
}