2013-02-19 82 views
26

मुझे किसी निर्देशिका में सभी व्यक्तिगत .txt फ़ाइलों (लगभग 300) के लिए आर में कमांड का एक सेट लागू करने की आवश्यकता है।आर में निर्देशिका में सभी फ़ाइलों के माध्यम से लूपिंग, एकाधिक कमांड लागू करना

मैं आर से बहुत परिचित नहीं हूं, इसलिए लूपिंग के बारे में मैंने जो भी मदद की है, वह उलझन में है, या जब मैं प्रत्येक फ़ाइल में एकाधिक कमांड लागू करने की आवश्यकता होती हूं तो मैं लूप को कैसे लागू कर सकता हूं ।

आदेशों मैं प्रत्येक फ़ाइल (वंशावली पेड़) निर्देशिका के भीतर करने के लिए लागू करने की जरूरत है (जो आर के बंदर पुस्तकालय का उपयोग करता है):

testtree <- read.tree("tree123.txt") 
unrooted_tr <- unroot(testtree) 
write.tree(unrooted_tr, file="unrootedtree123.txt") 

मैं एक पाश जो प्रत्येक व्यक्ति के लिए इन आदेशों को लागू करेंगे आवेदन कैसे करूँ .txt फ़ाइल (या तो आर या यूनिक्स कमांड लाइन में) का उपयोग कर रहे हैं? आउटपुट (उदा। Unrootedtree123.txt) प्रत्येक व्यक्तिगत फ़ाइल के लिए एक अलग नाम होना चाहिए।

अग्रिम धन्यवाद, दानी।

+0

आप क्या फ़ाइल नाम के वेक्टर है या फ़ाइलों नामकरण परिपाटी किसी तरह का पालन करें (उदाहरण के लिए पेड़ [3digitnumber])? –

उत्तर

47

आपको सभी फ़ाइलें प्राप्त कर सकते हैं और फिर पाश lapply का उपयोग करने और लागू करने के लिए आप इस प्रकार चाहते हैं जो कुछ भी समारोह लागू होते हैं:

files <- list.files(path="path/to/dir", pattern="*.txt", full.names=T, recursive=FALSE) 
lapply(files, function(x) { 
    t <- read.table(x, header=T) # load file 
    # apply function 
    out <- function(t) 
    # write to file 
    write.table(out, "path/to/output", sep="\t", quote=F, row.names=F, col.names=T) 
})