2012-11-18 49 views
3

可能重複:
R: Print list to a text file如何在R中將不同的長數據寫入文件?

療法是兩個向量,X1,X2

x1<-1:3 
x2<-1:6 

我想寫兩個向量到下面的命名test文件格式

1 2 3 
1 2 3 4 5 6 

write(file="c:/test",x1) 
write(file="c:/test",x2,append=TRUE,nlines=6) 

是有一個簡單的方法(在文件中的一個行一個向量)?

+0

只要使用'rbind',夥計!把事情簡單化。 –

回答

3

這是寫的所有對象相同的文件用一個命令道:

lapply(list(x1, x2), function(x) write(x, "c:/test", length(x), TRUE)) 
+0

儘管一行代碼很方便,但要注意文件打開和關閉兩次,否則將無法很好地擴展。當它變得太慢時,你更願意寫入文件連接(見'?file')。 – flodel

4

一個簡單的方法 - 無論是在寫作方面和讀取數據 - 是使用saveload

##Save both objects to the file 
##BTW, you should always use a file extension 
save(x1, x2, file="c:/test.RData") 

##Loads both objects into your workspace 
load("c:/test.RData") 
+0

+1,除了更容易它也更強大,並且在浮動的情況下,不會損失精度。而且,'save'可以處理任何R對象。 –

1

您也可以將paste中的數字轉換爲字符向量,並使用writeLines將它們轉儲到文件連接。

dat = list(vec1, vec2) 
dat_write = paste(dat, collapse = " ") 
con = file("c:\test", "w") 
writeLines(dat_write, con) 
close(con) 
+0

+1用於打開文件連接,這可以產生很大的不同。但是我不認爲輸出是OP所期望的,看看'as.character(dat)'的作用。你可以使用'不可見'(lapply(dat,cat,「\ n」,file = con))'。 – flodel