我有一个这样的文件,里面有很多行
2010-01-12 19:40 1021.00000 0.00001 1.00
2010-01-12 19:50 1031.00000 0.00000 -1.00为了把它读成动物园,我使用了
tmp <- read.table("myfile")
GOEMD <- zoo(tmp[,3], as.chron(paste(tmp[,1],tmp[,2]), format="%Y-%m-%d %H:%M"))这可以正常工作,但我想使用read.zoo()。
我试过了
f <- function(x) as.chron(paste(tmp[,1],tmp[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)甚至指定
colClasses= c("character","character","numeric","numeric","numeric")但是它不起作用;它显示:第136行(我在上面粘贴的那行)没有14个元素。
我也尝试过:
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = as.chron)发布于 2010-11-20 02:49:50
f中的拼写错误
read.zoo的一些特性。首先,请注意,如果index参数的值是一个列表,那么该列表的每个组件中引用的列将作为单独的参数传递给FUN。还要注意,可以使用FUN2参数,该参数应用于FUN的输出,因此我们可以像下面这样以紧凑的方式编写它:因此,试着这样做:
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)。
发布于 2010-11-18 21:08:07
您的函数f必须搜索tmp。你可能是想:
f <- function(x) as.chron(paste(x[,1],x[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)此外,您发布的示例数据看起来是制表符分隔的,而不是空格分隔的,因此您可能需要这样做:
tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)https://stackoverflow.com/questions/4214469
复制相似问题