2015-10-08 120 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 
}