编写没有索引的zoo对象

时间:2012-12-11 15:06:32

标签: r zoo

我有一个动物园对象(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")

我正在尝试将此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

谁能告诉我如何获得这个?

1 个答案:

答案 0 :(得分:0)

首先将数据转换为法线向量,并将其写为普通表:

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

实际上转换为向量似乎是不必要的,但我认为更清楚,因为你表明你正在丢弃与这些值相关的额外数据动物园。

正如Joshua Ulrich在下面的评论中所写,如果您的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="")