2014-02-19 20 views
0

我有一個\t分隔的.csv文件,其中第一行的列名稱和一些,的十進制符號數字。我試圖用read.csv()命令,像這樣來閱讀:當header = TRUE時,帶有read.csv的特殊字符加載完全停止

x = read.csv("Export.csv", header = TRUE, sep = "\t", dec = ",") 
輸入

(文件Export.csv)我有例如

"$\{,}_" 
45,2 

這給了我

<header>X....._</header> 
45.2 

我預期它會將引用的值解釋爲字符串和數字作爲數字。

它正確地將45,2解釋爲一個數字,但會混淆除下劃線之外的所有特殊字符。

我認爲這是一個編碼問題,所以我嘗試了幾個不同的編碼選項和相同的結果。

此外,如果我將header參數更改爲TRUE,我會正確顯示所有內容,但是所有數據都會被解釋爲字符串,並且(如預期)第一行不是標題。

如何在這些情況下將特殊字符加載到標題中?

問題上:RStudio版本0.98.501,R版本3.0.2版64,OS:Win 7的64

回答

0

data.frame一個的一列的所有元素都必須全部具有相同的類型。所以,當您嘗試閱讀專欄時,必須猜出您想要的內容。在第二個例子中,它將第一行作爲標題讀入,然後猜測該列是數字。它然後損壞名稱,因爲check.names設置爲TRUE,並且您的標題名稱不是「有效」名稱(它可能導致問題可能),因此它會嘗試修復它。

在第一個示例中,它讀取第一行,猜測它是一個字符(因爲它不是數字),然後整列變成一個字符。

如果你想在本專欄中閱讀,與$\{,}_爲頭名,你可以這樣做:

read.table(
textConnection('\"$\\{,}_\" 
45,2'),header=TRUE,check.names=FALSE,dec=',') 

如果你想讀這個數據,和元素轉換爲numericcharacter ,你必須以字符的形式讀取它,然後自己轉換它,將這些元素放入列表中。