2015-05-28 98 views
2

我想轉換一個文件中像如下轉換文本文件

hello 
world 
123 

bye 
world 
456 

byee 
world 
456678 

到CSV文件中像

hello,world,123 
bye,world,456 
byee,world,456678 

是可以做到這一點,而無需通過迭代整個文件,看到新線?

+0

我禾ULD做:'掃描()'中,結合所有部分,每部分,然後write.csv()。可能有更好的解決方案。 – Vlo

回答

2

使用的scan的multi.line能力,然後write.table適當的參數:

txt <- "hello 
world 
123 

bye 
world 
456 

byee 
world 
456678" 
temp <- data.frame(scan(text=txt, 
        what= list(word="", dest="", num=numeric(), "NULL"), 
        multi.line=TRUE)) 
write.table(temp, sep=",", file="", quote=FALSE,col.names=FALSE) 
#------------- 
1,hello,world,123, 
2,bye,world,456, 
3,byee,world,456678, 

很明顯,你會如果你想這樣發送到磁盤使用的法律文件名。

1
dat <- readLines(# con = 'path/to/your/file' 
    con = textConnection('hello 
world 
123 

bye 
world 
456 

byee 
world 
456678') 

write.csv(
    t(matrix(
    dat[-seq(4,length(dat),4)], # Drop the spacer 
    length(dat)/3,3), # Estimate columns 
    file = "path/to/your.csv" 
)) 
+0

不。你有賺你的yupvote。 –

1

掃描它,逐行形成3列矩陣並寫出來。 (替換的scan第一個參數和write.table與輸入和輸出文件名的第二個參數。)

m <- matrix(scan(textConnection(Lines), what = ""), ncol = 3, byrow = TRUE) 
write.table(m, stdout(), sep = ",", row.names = FALSE, col.names = FALSE, quote = FALSE) 

,並提供:

hello,world,123 
bye,world,456 
byee,world,456678 

注意

我們用這個作爲輸入

Lines <- "hello 
world 
123 

bye 
world 
456 

byee 
world 
456678"