3

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

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

4

1 回答 1

1

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

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="")
于 2012-12-11T15:46:48.890 回答