2013-01-03 55 views
1

我已經寫了一個函數,允許我從剪貼板中取出四列數據,分割它,添加一個額外的列,重新組合它,並將它作爲文本文件導出。插入一個數據表到一個文本文件

xyztoinp <- function(x) { 
    x <- read.table(file="clipboard") 
    a <- x[,-1] 
    b <- x[,1] 
    c <- ifelse(b == "C", 6, 
    ifelse (b == "O", 8,ifelse (b == "H", 1, 3))) 
    x <- cbind(b,c,a) 
    write.table(x, file="IRCoutput", quote = FALSE, 
    sep = "\t", row.names = FALSE, col.names = FALSE) 
} 

我有兩個問題: -

是否有可能創建一個具有我已經有了這個功能使得表粘貼到一些文本中間創建的表文件?

text_text_text_text_text_text_text_ 
text_text_text_text_text_text_text_ 

Neatly formated table 

text_text_text_text_text_text_text_ 
text_text_text_text_text_text_text_ 

其次,我試圖修改功能,這樣它會採取一個文件名作爲變量;即xyztoinp <- function(x, NewFileName) {

etc ... 但是,這並沒有產生一個新的文件名輸出;有誰知道這是如何完成的?

這是我工作的代碼,

xyztoinp < - 函數(X){
        X < - 函數read.table(文件= 「剪貼板」)
       一個< - x [, - 1]
        b < - x [,1]
       Ç< - ifelse(B == 「C」,6,
        ifelse(B == 「O」,8,
        ifelse(B == 「H」 1,3)))
        X < - cbind(b,C,A)
        ZZ < - 文件(「新File.inp」, 「W」)
       貓( 「文本」,         「文本」,
        「文本」,
        「」
         「text」,
          「文本」,
        「文本」,FILE = ZZ,九月= 「\ n」 個)
       寫入。表(X,文件= ZZ,報價= FALSE,
       月= 「\ t」 的,row.names = FALSE,col.names = FALSE)
       貓( 「文本」,文件= ZZ)
       接近(ZZ)
}

感謝所有,尤指@格雷格。 ps這是不可能改變函數的文件名,但我很滿意上述。 insterted成文本

+0

一)歡迎SO。 b)請學會格式化你的問題。三)請參閱您的R. –

回答

1

一般人之所以想表(或圖表,或輸出,或......)是創建某種類型的自動報告(如果這不是你的情況,那麼請給予更詳細的,所以我們可以回答實際問題)。

要創建具有很好的格式化表格(和其他東西)自動報告最好的方法是創建一個模板,並對其進行處理,以創建報告。查看knitr包的詳細信息(您也可以使用odfweave包或sweave函數或其他,但knitr可能是最一般的)。

,如果你不想預先創建的報表模板另一種選擇是奉迎包。

切換到pander或knitr也可能會照顧到你的第二個問題,但如果沒有,那麼我們將需要看看你試過了什麼,怎麼知道爲什麼它不工作以及如何提供幫助。

+0

「一般人之所以想......」我想創造另一個程序的輸入文件的安裝附帶的R輸入/輸出手冊。輸入文件由一些序言組成,後面跟着腳本,後面跟着一張座標表,接着是一些腳本。我正在嘗試使用sink()來解決我的問題(閱讀@ Dirk的註釋之後)。 – user1945827

+0

如果你想要去模板路線,那麼ascii包可能會有所幫助。如果要動態地創建這則不要使用水槽,但打開一個文件連接,然後使用「貓」與文件的說法是你連接到寫東西像序言中,然後使用'write.table'與連接座標,然後'cat'。使用打開的連接(見'?file')將允許不同的函數寫入同一個文件而不覆蓋。 –

+0

謝謝。我使用了第一個在?文件中找到的例子,並將其應用到我的函數中。它現在像一種魅力。 – user1945827

相關問題