2012-12-11 31 views
2

我有一個動物園對象(TMP),其中有日期和時間作爲指標,像下面寫動物園的對象,而不指數

> library(zoo) 
> library(chron) 
> tmp 
(01/01/97 00:00:00) (01/01/97 01:00:00) (01/01/97 02:00:00) 
      5.0     3.2     6.7 
> dput(tmp) 
structure(c(5, 3.2, 6.7), index = structure(c(9862, 9862.04166666667, 
9862.08333333333), format = structure(c("m/d/y", "h:m:s"), .Names = c("dates", 
"times")), origin = structure(c(1, 1, 1970), .Names = c("month", 
"day", "year")), class = c("chron", "dates", "times")), class = "zoo") 

我想寫這個動物園對象到一個文本文件中的值,並我只想要在文本文件中寫入的值。我用下面的代碼:

write.zoo(tmp,file="D:/test.txt", row.names=FALSE, quote=FALSE, na="") 

,我得到以下文件:

(01/01/97 00:00:00) 5 
(01/01/97 01:00:00) 3.2 
(01/01/97 02:00:00) 6.7 

,但我想輸出是

5 
3.2 
6.7 

誰能告訴我怎麼走呢?

+0

很抱歉的修正,動物園物體看起來喜歡這樣的: >頭(TMP) V1 V2 V3 1 1/1/1997 0 5 2 1/1/1997 1 3.2 3 1/1/1997 2 6.7 謝謝 uvozone – user1807652

+1

它看起來不像'tmp'是動物園對象。 Provie是'dput(tmp)'的輸出,請修改你的問題,而不是通過評論。 –

回答

0

將數據轉換成一個正常的矢量第一,寫,作爲一個普通表:

write.table(as.vector(tmp), file="D:/test.txt", 
      row.names=FALSE, col.names=FALSE, quote=FALSE, na="") 

實際上轉化爲向量似乎是不必要的,但我認爲它更清晰的表明您是扔掉額外的數據動物園與這些值相關聯。

約書亞烏爾裏希在下方留言,寫,如果你tmp對象有多個列,你應該使用coredata,而不是as.vector

write.table(coredata(tmp), file="D:/test.txt", 
      row.names=FALSE, col.names=FALSE, quote=FALSE, na="") 

所不同的是,這將產生一個文件多個列,而as.vector將通過簡單地逐列寫出列向量來生成單個列。取決於你的用例。

我想(雖然我可能是錯的),下面的作品一樣coredata版本:

write.table(tmp, file="D:/test.txt", 
      row.names=FALSE, col.names=FALSE, quote=FALSE, na="") 
+0

謝謝你MvG,工作! – user1807652

+3

使用'coredata'而不是'as.vector',因爲'tmp'變暗時'as.vector'不會做你想要的。 –

+0

嗨,Joshua,你可以舉一個如何使用coredata的例子嗎?謝謝 - 沒關係,我明白了。剛剛搜索coredata,並在動物園quickref中找到它。感謝你的幫助。 – user1807652