Программные средства для интерфейса не предоставляют жесткие коды правильно, значит, ваши коды должны быть расширены без нарушения предыдущей функциональности ..... просто расширения, не редактирующие коды prev
Для Linux / Unix:
wc -l filename
Для Windows:
find /c /v "A String that is extremely unlikely to occur" filename
Вот что я использовал:
testcon <- file("xyzfile.csv",open="r")
readsizeof <- 20000
nooflines <- 0
( while((linesread <- length(readLines(testcon,readsizeof))) > 0 )
nooflines <- nooflines+linesread )
close(testcon)
nooflines
Отметьте это сообщение для более: https://www.r-bloggers.com/easy-way-of-determining-number -Из-linesrecords-в-дали-большой файл-с помощью R /
Вариант 1:
Через соединение с файлом count.fields()
подсчитывает количество полей в строке файла на основе некоторого значения sep
(что нам здесь неинтересно). Поэтому, если мы возьмем длину этого результата, теоретически мы должны указать количество строк (и строк) в файле.
length(count.fields(filename))
Если у вас есть строка заголовка, вы можете пропустить ее с помощью skip = 1
length(count.fields(filename, skip = 1))
Существуют и другие аргументы, которые вы можете настроить для своих конкретных потребностей, например пропустить пустые строки.
args(count.fields)
# function (file, sep = "", quote = "\"'", skip = 0, blank.lines.skip = TRUE,
# comment.char = "#")
# NULL
Подробнее см. help(count.fields)
.
Не так уж плохо, насколько скорость идет. Я тестировал его на одном из моих файлов бейсбола, который содержит 99846 строк.
nrow(data.table::fread("Batting.csv"))
# [1] 99846
system.time({ l <- length(count.fields("Batting.csv", skip = 1)) })
# user system elapsed
# 0.528 0.000 0.503
l
# [1] 99846
file.info("Batting.csv")$size
# [1] 6153740
Вариант 2: Еще одна идея - использовать data.table::fread()
для чтения только первого столбца, а затем взять количество строк. Это было бы очень быстро.
system.time(nrow(fread("Batting.csv", select = 1L)))
# user system elapsed
# 0.063 0.000 0.063