2010-11-20 351 views
0

我有五個文本文件,這些文件由R程序生成(每個文件都有頭文件),這些文件將被合併到一個文件中。我一直在使用rbind將它們結合在一起,我的問題是,當我將它們合併,其輸出具有附加在每個文件例如結束頭, 如果頭應該將多個文件合併爲一個頭文件

Combine Resultant file 
A B C D 
1 3 5 7 ------------> Text file1 
6 9 0 3 
A B C D 
1 3 6 7 ------------> Text file 2 
5 7 8 3 
and so on.... 

,而不是我想要的輸出文件有在行只有一個頭1 所以文件應該是這樣的:

Combine Resultant file 
A B C D 
1 3 5 7 ------------> Text file1 
6 9 0 3 
1 3 6 7 ------------> Text file 2 
5 7 8 3 
and so on.... 

誰能告訴我該怎麼做? 我的代碼是:

S1 <- read.table("C:/Simulation_Results/sim_1_200.txt",sep=";",header= TRUE); 
S2 <- read.table("C:/Simulation_Results/sim_201_400.txt", sep=";",header= TRUE); 
S3 <- read.table("C:/Simulation_Results/sim_401_600_b.txt", sep=";",header= TRUE); 
S4 <- read.table("C:/Simulation_Results/sim_601_800.txt", sep=";",header= TRUE); 
S5 <- read.table("C:/Simulation_Results/sim_901_1000.txt",sep=";",header= TRUE); 
S6 <- read.table("C:/Simulation_Results/simulations_801_900.txt",sep=";",header= TRUE); 
options(max.print=28.5E6); 
S7 <- rbind(S1,S2,S3,S4,S5,S6) 
write.table(S7, file="C:/Simulation_Results/simulation_1_1000.txt", sep=";", 
      row.names=TRUE, col.names=FALSE, quote = FALSE); 

謝謝!

+1

這看起來對我來說是正確的。也許這個錯誤在你的其他程序生成的txt文件中。我們能否看到「頭(S1)」和「尾巴(S1)」?此外,格式化問題中的代碼很有幫助(突出顯示代碼段並按下代碼按鈕 - 上面帶有1010的代碼)。 – 2010-11-20 18:21:44

+0

我們可以看到S1的頭部和尾部嗎?是問題逗號和小數的一部分?就像Dwin指出的那樣,編寫txt文件的R代碼可能會誤報頭文件。 – 2010-11-20 20:56:14

+0

你有生成文件的代碼嗎?如果是這樣,我只是將表保存爲單個變量x1 < - as.data.frame(table1)。然後rbind() – 2010-11-21 04:03:24

回答

1

這聽起來像是不正確的導入。你應該提供一個示例數據。無論如何,代替使用read.table("some.file", header=TRUE, sep=";"),請嘗試read.csv2,因爲它具有header=TRUEsep=";"作爲默認參數。

而不是rbind,爲什麼不使用merge

0

是;您的輸入數據與您的閱讀功能不匹配,並且您使用錯誤的sep參數閱讀數據時出現問題。我認爲你需要跳過一行才能找到標題所在的位置。試試這個:

S1 <- read.table("C:/Simulation_Results/sim_1_200.txt", header= TRUE, skip=1) 
S2 <- read.table("C:/Simulation_Results/sim_201_400.txt", skip=1, header= TRUE) 
S3 <- read.table("C:/Simulation_Results/sim_401_600_b.txt", skip=1 , header= TRUE) 
S4 <- read.table("C:/Simulation_Results/sim_601_800.txt", skip=1, header= TRUE) 
S5 <- read.table("C:/Simulation_Results/sim_901_1000.txt", skip=1 , header= TRUE) 
S6 <- read.table("C:/Simulation_Results/simulations_801_900.txt", skip=1, header= TRUE) 

然後像以前一樣繼續。 sep =「;」阻止了空白分隔被識別,並且在引導行中有一些東西導致您的標題不能轉換爲列名。

0

在迪文跟進:怎麼樣

startvals <- c(1,201,401,601,801,901) 
endvals <- c(startvals[-1]-1,1000) 
fns <- paste("C:/Simulation_Results/",startvals,"_",endvals,".txt",sep="") 
## I'm assuming for the moment that your S6 file is *not* named differently from the others 
S <- lapply(fns, read.csv2, skip=1) 
S_comb <- do.call(rbind,S) 

,倘若你在某種特定的方式命名你的模擬文件,以便您能識別它們全部用list.files(模式=「[一些正則表達式]」 )那麼你可以開始這樣...

相關問題