R公式与readLines

时间:2013-10-10 09:38:25

标签: 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

1 个答案:

答案 0 :(得分:0)

readLines参数对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更改为更大的内容。