2015-06-24 28 views
0

我有2.000+個表格,其中有幾百個表格,我從Web服務(植物學名稱)下載並保存到磁盤以供進一步檢查。如何引用R中的不同數據框架

由於一些文本字段有回車,我決定引用一切。但是有些領域有「角色,其他角色」,所以這些角色不能用於引用(我可以嘗試逃避它們,但有些已經逃脫了,這很容易變成一團糟,我認爲這會更容易使用不同的引用字符)我嘗試%,只是發現一些字段也使用這個字符,所以我需要一些不同的東西,我嘗試了¨☺π和人,但似乎沒有任何工作,它們全部在屏幕上正確顯示(在Ubuntu 14.04中的RKWard),所有的都用write.table正確保存,但NONE可以用read.table或read.csv讀取,我使用UTF-8作爲fileEncoding,我得到消息「invalid multibyte string」,即使☺(這是ASCII 1個字符)。

Sys.getlocale(category="LC_ALL") 

"LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=pt_BR.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=pt_BR.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=pt_BR.UTF-8;LC_NAME=pt_BR.UTF-8;LC_ADDRESS=pt_BR.UTF-8;LC_TELEPHONE=pt_BR.UTF-8;LC_MEASUREMENT=pt_BR.UTF-8;LC_IDENTIFICATION=pt_BR.UTF-8" 

我試過改變語言環境爲中文,使用人(不應該需要,我想,因爲它顯示和保存正確),但也沒有工作。我得到

OS reports request to set locale to "chinese" cannot be honored 
OS reports request to set locale to "Chinese" cannot be honored 
OS reports request to set locale to "zh_CN.utf-8" cannot be honored 

現在最奇怪的:如果中國字符是數據的主體,他們沒有問題讀。看起來他們不能像引號一樣去!

任何想法?提前致謝。

+0

「由於一些文本字段有回車符,我決定引用所有內容。」爲什麼?你不希望回車破折線?我認爲你的解決方案可能與你真正想要完成的任何事情有關,而不是使用非標準字符作爲引號。 – Molx

+0

回車位於文本字段內,所以如果沒有正確引用它們就會弄亂表格。回車後的文本成爲下一行的第一個字段,下一個字段成爲下一行的第二個字段,依此類推。 – Rodrigo

+0

另外,如果read.table可以選擇包含ANY字符作爲引號,那麼爲什麼系統的其他部分會如此奇怪呢? – Rodrigo

回答

0

我不確定這是您正在尋找的解決方案,但是如果我理解正確,您的文本中會出現CR/LF字符,這是將數據作爲表讀取的問題。如果是這樣,您可以使用readLines自動轉義\r,\n\r\n,然後將其作爲表格讀取。例如,考慮文件crlf.txt

col1 col2 col3 col4 col5 
1 \n 3 \r 5 
a \r\n 3 2 2 

您可以使用

> readLines("crlf.txt") 
[1] "col1 col2 col3 col4 col5" "1 \\n 3 \\r 5 "   
[3] "a \\r\\n 3 2 2" 

然後:

> read.table(text=readLines("crlf.txt"), header = T) 
    col1 col2 col3 col4 col5 
1 1 \\n 3 \\r 5 
2 a \\r\\n 3 2 2 

顯然行打印時休息,現在逃了出來,否則他們將真正突破線。

0

參見?scan(掃描用於由read.table):

報價:該組引用字符作爲一個字符串或「NULL」的。 在多字節語言環境中,引用字符必須是ASCII(單字節)。

最簡單的辦法是,以取代所有嵌入的新行用另一個字符串導入文件之前,再後來使用GSUB重新引入新的生產線。

相關問題