質問

この種の行が多数含まれるファイルがあります

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)
役に立ちましたか?

解決

  1. のタイプミス f すでに指摘されていた。
  2. また、いくつかの特徴があります 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 セッションに貼り付けることができます。ファイル置換で使用するには textConnection(Lines)"myfile".

他のヒント

あなたの関数ftmpを検索することがあります。あなたは、おそらく意図します:

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top