为什么在R中使用readLines的while循环中没有计数器更新?

时间:2015-07-10 01:03:18

标签: r

在R中,为什么在使用readLines?的while循环中没有计数器更新?例如,如果我运行以下代码,x和y最后输出10:

x <- 0
y <- 0
while(x < 10){
  x <- x + 1
  y <- y + 1
}
x
y

但是,名为test.txt的文件包含以下内容:

line one 
line two 
line three

并使用以下代码,计数器不会更新:

textFile <- file("test.txt", open="r")
x <- 0
while(length(line <- readLines(textFile)) > 0){
  x <- x + 1
}
close(textFile)
x

为什么x输出1而不是3?

1 个答案:

答案 0 :(得分:3)

因为readLines()一次不在一行中读取文件。它读取所有文件,除非你提供n=参数,在这种情况下它只会在停止之前读取一定数量的行。请注意,即使您只读了一行,然后再次调用readLines(),它也会从文件的开头开始。