特定の数値が出現するまでRでデータを読み込む
タブ区切りのデータについて。
データが何行あるかわからない場合を考える。
*----------------------* 1 10 100 2 20 200 5 50 500 10 100 1000 *----------------------*
このようなtxtファイルがあるとする。
read.table()で読み込むと
*----------------------*
の部分が悪さをしてエラーが出るため、以下の関数を作成して読み込んだ。
get_i <- function(filename, target){ f<-file(filename,"r") num<-0 for(i in 1:10000){ a<-readLines(con=f,1) if(i>1){ v<-as.vector(as.numeric(strsplit(a,"\t")[[1]])) if(v[1]==target){ return(i) } } } return() }
1行ごとに読み込み、targetとした目的の数値が出たところで読み込みを終了し、
目的の数値が何行目にあるかを返してくる。
今回はskip=1であるから、関数を以下のように使用する。
i<-1 filename<-paste("output",i,".txt",sep="") n<-get_i(filename, 10) data<-read.table(filename,skip=1,nrows=n-1,sep="\t")