2013-10-10 14 views
0

저는 R이 새롭고 readLines 함수로 수식을 만들려고합니다. 그러나 항상 R은 동일한 오류를 반환하고 수정 방법을 모릅니다. 어떤 제안?R formule with readLines

내 공식

sam.cover<-function(){ 
    readLines()->CH 
    gsub("00","0,0",CH)->CH 
    gsub("01","0,1",CH)->CH 
    gsub("10","1,0",CH)->CH 
    gsub("11","1,1",CH)->CH 
    gsub(" 1;","",CH)->CH 
    gsub("00","0,0",CH)->CH 
    gsub("01","0,1",CH)->CH 
    gsub("01","1,0",CH)->CH 
    gsub("11","1,1",CH)->CH 
    write.table(CH,"temporaryfile.txt",quo=F,sep="",row=F,col=F) 
    as.matrix(read.table("temporaryfile.txt",sep=","))->CH 
    matrix(CH,nr=dim(CH)[ 1])->CH 
    apply(CH,1,sum)->SUM 
    CF<-999 
    t<-dim(CH)[ 2] 
    for(i in 1:t){ 
     CF<-c(CF,sum(SUM==i)) 
    } 
    cat("Capture frequencies : ","\n") 
    print(rbind(1:i,CF[ -1])->CF) 
    f1<-CF[ 2,1] 
    f2<-CF[ 2,2] 
    f3<-CF[ 2,3] 
    cat("Sample coverage estimates : ","\n") 
    cat("C1-hat =",1-f1/sum(apply(CF,2,prod)),"\n") 
    cat("C2-hat =",1-(f1-2*f2/(t-1))/sum(apply(CF,2,prod)),"\n") 
    cat("C3-hat =",1-(f1-2*f2/(t-1)+6*f3/(t-1)/(t-2))/sum(apply(CF,2,prod)),"\n") 
} 

내 데이터

ide c1 c2 c3 c4 c5 
N19 1 1 1 0 1 
N29 0 0 1 1 0 
N39 0 0 1 0 1 
N49 0 0 0 1 1 
N59 0 0 1 0 0 

내 오류 :

Error in readLines(histoire.inp) : 'con' is not a connection 
+0

안녕하세요! 스택 오버플로에 오신 것을 환영합니다. 'readLines'에 대한 답을 제공해주었습니다 만, R을 처음 접했을 때'read.table'을 알고 있는지 물어볼 것입니다. –

답변

0

readLines AR gument는 connection에서 작동하므로 줄 단위로 파일을 읽으려면 경로를 지정하는 것보다 조금 더 작업해야합니다.

먼저, 당신은 당신의 파일에 connection를 열어야합니다 : 당신이 라인으로 라인에서 파일을 읽어들이는 경우,

conn <- file("histoire.inp", "rt") # second argument indicates we're reading a text file. 

을 그럼, 유용한 다음과 같은 코드 블록 (Original idea here)을 찾을 수 있습니다 :

while (length(oneLine <- readLines(conn, n = 1, warn = FALSE)) > 0) { 
    # Do something to your line of text, stored in `oneLine` 
} 
close(conn) 

블록으로 파일을 읽으려면 n을 더 크게 변경할 수 있습니다.