2017-06-27 44 views
2

轉換列表以csv文件我在形式,使用R

0 -121.904167 41.974556 
1 -121.902153 41.974766 
2 -121.896790 41.988075 
.... 

名單,我需要(用R)

0; -121.904167; 41.974556 
1; -121.902153; 41.974766 
2; -121.896790; 41.988075 

我將其轉換爲csv文件形式導入列表

doc1 <- readLines("https://www.cs.utah.edu/~lifeifei/research/tpq/cal.cnode") 

然後我用分號代替空格

doc1 <- gsub("\\s+",";", doc1) 

,然後我出口doc1到.csv文件

cat(doc1, file = "doc1.csv") 

但我導出的文件看起來有點混亂。首先,所有生產線緊挨着另一個,而不是一個在另一個之下。 此外,我的第一行的最後一個元素被認爲是附加到第二行的第一個元素等

讓你知道我究竟是什麼意思,如果我將這個.csv文件導入到Excel中(這不是我的最終的目標在這裏,只是爲了清楚起見) 我讓我所有的文件寫入到一個單列,其中列

0 | -121.904167 | 41.974556 1 | -121.902153 | 41.974766 2 | -121.896790 ..... 

,而我的CSV文件中崇高的長相開這樣

0;-121.904167;41.974556 1;-121.902153;41.974766 2;-121.896790;41.988075 3;-121.889603;41.998032 4;-121.886681;42.008739 5;-121.915062;41.970314 6;-121.910088;41.973942 7;-121.916199;41.969482 

任何想法如何正確實現使用R?

+0

你爲什麼不使用'write.table'家庭的功能? –

+0

@docendodiscimus問題不在於編寫csv文件,而是解析它並在保持行順序的同時添加分號。 –

+1

對我來說,它看起來應該使用'read.table'系列函數讀取數據,以便獲得'data.frame',然後無需解析或手動插入分號,因爲這就是'write.table功能家族可以爲你服務。 –

回答

2
library(data.table) 
input<-fread(input = "https://www.cs.utah.edu/~lifeifei/research/tpq/cal.cnode") 

檢查它是否導入OK。

>dim(input) 
[1] 21048  3 

最後將其導出爲用逗號分隔符(默認)CSV:

write.csv(input,"output.csv",row.names = F) 
+3

你爲什麼需要'fread'?你可以簡單地使用base R'write.csv2(read.table(「https://www.cs.utah.edu/~lifeifei/research/tpq/cal.cnode」),file =「myfile.csv」)' –

+2

我更喜歡它。更快更可靠。在這兩種情況下,'col.names = F'都不起作用,它會創建csv文件,在頂行添加'「V1」;「V2」;「V3」'',我猜 – amonk

+0

。我收到以下錯誤:警告消息: 在write.csv(輸入,文件=「output.csv」,row.names = F,col.names = F): 試圖設置'col.names'忽略 –