首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用read.zoo而不是read.table和zoo()?

使用read.zoo而不是read.table和zoo()?
EN

Stack Overflow用户
提问于 2010-11-18 19:57:11
回答 2查看 1.6K关注 0票数 2

我有一个这样的文件,里面有很多行

代码语言:javascript
复制
2010-01-12 19:40   1021.00000   0.00001     1.00
2010-01-12 19:50   1031.00000   0.00000     -1.00

为了把它读成动物园,我使用了

代码语言:javascript
复制
tmp <- read.table("myfile")
GOEMD <- zoo(tmp[,3], as.chron(paste(tmp[,1],tmp[,2]), format="%Y-%m-%d %H:%M"))

这可以正常工作,但我想使用read.zoo()

我试过了

代码语言:javascript
复制
f <- function(x)  as.chron(paste(tmp[,1],tmp[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = f)

甚至指定

代码语言:javascript
复制
colClasses= c("character","character","numeric","numeric","numeric")

但是它不起作用;它显示:第136行(我在上面粘贴的那行)没有14个元素。

我也尝试过:

代码语言:javascript
复制
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = as.chron)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-20 02:49:50

f中的拼写错误

  1. 已经被指出了。
  2. 您可能还希望利用read.zoo的一些特性。首先,请注意,如果index参数的值是一个列表,那么该列表的每个组件中引用的列将作为单独的参数传递给FUN。还要注意,可以使用FUN2参数,该参数应用于FUN的输出,因此我们可以像下面这样以紧凑的方式编写它:

因此,试着这样做:

代码语言:javascript
复制
library(zoo)
library(chron)

Lines <- "2010-01-12 19:40   1021.00000   0.00001     1.00
2010-01-12 19:50   1031.00000   0.00000     -1.00"

z <- read.zoo(textConnection(Lines), index = list(1, 2), 
        FUN = paste, FUN2 = as.chron)

上面的代码是自包含的,所以你可以将其逐字复制到剪贴板上,然后粘贴到R会话中。要在您的文件中使用它,请用"myfile"替换textConnection(Lines)

票数 3
EN

Stack Overflow用户

发布于 2010-11-18 21:08:07

您的函数f必须搜索tmp。你可能是想:

代码语言:javascript
复制
f <- function(x)  as.chron(paste(x[,1],x[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)

此外,您发布的示例数据看起来是制表符分隔的,而不是空格分隔的,因此您可能需要这样做:

代码语言:javascript
复制
tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4214469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档