2010-11-18 5 views
2

私はこの種の多くの行を持つファイルがありますread.tableとzoo()の代わりにread.zooを使用していますか?

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(私が上に貼り付けた1つ)は14要素を持っていません。

私も試しました:

tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = as.chron) 

答えて

3
  1. タイプミスでは:それはタブ区切りではなく、スペースが区切りだようにあなたは、この代わりに必要がある場合がありますので、

    f <- function(x) as.chron(paste(x[,1],x[,2])) 
    tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f) 
    

    また、サンプルデータを使用すると、ルックスを投稿しました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"に置き換えてください。

+0

こんにちは。できます。しかし、最初の3行だけをどのように読むことができますか?私は同じ行を意味します。変数があれば、myvar [1:3]と書いていますが、ファイル名を使って直接行うことはできますか? ( "myfile.txt"、colClasses = c( "文字"、 "文字"、 "数字"、 "数値"、 "NULL")、インデックス=リスト(1,2)、私は方法を見つけた – skan

+0

私は方法を見つけた: 、FUN =ペースト、FUN2 = as.chron) – skan

2

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

tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron) 
+0

申し訳ありませんが、タイプミスです。とにかく、それは私のために働かない。 – skan

関連する問題