Формула R с readLines

Я новичок в R и пытаюсь сделать формулу с функцией readLines, но R все время выдавал одни и те же ошибки и не знаю как это исправить. Какие-либо предложения?

моя формула

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

person Maria    schedule 10.10.2013    source источник
comment
Привет! Добро пожаловать в Stack Overflow. Я предоставил ответ для readLines, но я спрошу, знаете ли вы о read.table, так как вы сказали, что вы новичок в R.   -  person Scott Ritchie    schedule 26.10.2013


Ответы (1)


Аргумент readLines работает с connection, поэтому, если вы хотите прочитать файл построчно, вам нужно проделать немного больше работы, чем просто указать путь.

Во-первых, вам нужно открыть connection к вашему файлу:

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

Затем, если вы хотите прочитать файл построчно, я считаю полезным следующий блок кода (исходная идея здесь) :

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

Вы можете изменить n на что-то большее, если хотите читать файл блоками.

person Scott Ritchie    schedule 26.10.2013