我是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
答案 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
更改为更大的内容。