read.tableとzoo()の代わりにread.zooを使用しますか?
-
26-09-2019 - |
質問
この種の行が多数含まれるファイルがあります
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)
解決
- のタイプミス
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 セッションに貼り付けることができます。ファイル置換で使用するには textConnection(Lines)
と "myfile"
.
他のヒント
あなたの関数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)
所属していません StackOverflow