2012-11-05 54 views
-1

我想從R保存data.frame,以便它可以從Excel中讀取。我用其他幾個與我現在提到的結構相同的數據框完成了這一工作,至今沒有任何問題。但由於某種原因,當我嘗試保存此數據框架並使用Excel打開它時,Excel中沒有讀取FreqDev和LengthDev列中的許多數值。相反,這些行顯示一串「#」符號。Excel錯過了數值向量與write.table函數在R

我data.frame看起來是這樣的:

head(RegPartV) 
    LogFreq  Word PhonCV WordClass FreqDev LengthDev Irregular 
1277 28.395 geweest CV-CVVCC   V 5.464336 -1.1518498  FALSE 
903 25.647 gemaakt CV-CVVCC   V 4.885296 -1.1518498  FALSE 
752 23.304 gehad CV-CVC   V 4.391595 -2.1100420  FALSE 
610 22.765 gebracht CV-CCVCC   V 4.278021 -0.6727537  FALSE 
1312 22.041 gezegd CV-CVCC   V 4.125465 -1.6309459  FALSE 
647 21.987 gedaan CV-CVVC   V 4.114086 -1.6309459  FALSE 

在data.frame類型的信息是:

str(RegPartV) 
'data.frame': 2096 obs. of 7 variables: 
$ LogFreq : num 28.4 25.6 23.3 22.8 22 ... 
$ Word  : chr "geweest" "gemaakt" "gehad" "gebracht" ... 
$ PhonCV : chr "CV-CVVCC" "CV-CVVCC" "CV-CVC" "CV-CCVCC" ... 
$ WordClass: Factor w/ 1 level "V": 1 1 1 1 1 1 1 1 1 1 ... 
$ FreqDev : num 5.46 4.89 4.39 4.28 4.13 ... 
$ LengthDev: num -1.152 -1.152 -2.11 -0.673 -1.631 ... 
$ Irregular: logi FALSE FALSE FALSE FALSE FALSE FALSE ... 

奇怪的是,如果我把鼠標移動到數字那些現在只有#符號的單元格(在excel文件中),我看到原始R data.frame中曾經存在的數字的痕跡。例如,這些列在data.frame第一行的值是:

>RegPartV[1,c(5,6)] 
     FreqDev LengthDev 
1277 5.464336 -1.15185 

如果我把我的鼠標在Excel單元格(即只包含#符號),對應於相同的價值觀我只是結果顯示,我看到:

54643356148468 

-115184982188519 

所以這些數字仍然存在,但由於某些原因R或Excel中丟失的小數在何處計數。

我使用保存data.frame的方法(和我已經用了結構等效data.frame)是:

write.table(RegPartV,file="RegPartV",quote=F,sep="\t",row.names=F,col.names=T) 

然後我打開文件,Excel和我期望看到那裏的所有信息,出於某種原因,我對這個特定的data.frame有這個數字問題。

任何獲得Excel可讀數據框架的建議都非常受歡迎。

在此先感謝。

+0

用文本編輯器打開'RegPartV',確定問題出在Excel還是R.我的錢在Excel上。 – hadley

+0

用記事本打開時導出的文件內容是什麼? –

+0

@hadley問題的確在Excel中。如果我用文本編輯器打開文件,我會看到所有正確的信息。可悲的是,我需要excel,因爲我需要將信息放在不同的單元格上,並且使用文本編輯器打開它只是爲我提供了原始數據。 Jüri,我想這也回答你的問題。使用記事本可正確顯示信息。 – HernanLG

回答

2

從您的問題描述我懷疑你有「,」作爲Excel中的默認小數點分隔符。在Excel中更改默認值或將dec=","添加到write.table命令。

+0

你是對的。我的Excel的默認小數點分隔符是「,」,所以我只是將write =「,」添加到write.table函數中,現在我可以在我的excel文件中看到正確的值。 雖然這很奇怪,因爲我之前使用過結構上相同的文件,而這是我遇到過這個問題的時候。無論如何,事情現在已經修復,所以謝謝! – HernanLG

1

這實際上並不是一個錯誤:「#」意味着字符串/值太長而無法放入列中。擴大列,你會看到適當的內容。

+0

謝謝@Jüri,但數字似乎仍然存在問題。列FreqDev和LengthDev的第一個單元格的原始值分別爲5.464336和-1.15185,但是在Excel中放大單元格後,我得到值54.643.356.148.468和-115.184.982.188。519 因此,Excel似乎還沒有很好地讀取單元格內容。另外,我忘了補充說有幾個值被正確讀取。也就是說,那些是0的東西,但那些高得多的東西弄亂了。 – HernanLG