Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 是否可以在不打开CSV文件的情况下获取CSV文件中的行数?_R_Excel_Csv - Fatal编程技术网

R 是否可以在不打开CSV文件的情况下获取CSV文件中的行数?

R 是否可以在不打开CSV文件的情况下获取CSV文件中的行数?,r,excel,csv,R,Excel,Csv,我有一个大小为1 GB的CSV文件,由于我的笔记本电脑是基本配置,我无法在Excel或R中打开该文件。但出于好奇,我想获取文件中的行数。如果我能做到,我该怎么做?对于Linux/Unix: wc -l filename 对于Windows: find /c /v "A String that is extremely unlikely to occur" filename 对于Linux/Unix: wc -l filename 对于Windows: find /c /v "A Strin

我有一个大小为1 GB的CSV文件,由于我的笔记本电脑是基本配置,我无法在Excel或R中打开该文件。但出于好奇,我想获取文件中的行数。如果我能做到,我该怎么做?

对于Linux/Unix:

wc -l filename
对于Windows:

find /c /v "A String that is extremely unlikely to occur" filename
对于Linux/Unix:

wc -l filename
对于Windows:

find /c /v "A String that is extremely unlikely to occur" filename

选项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
有关更多信息,请参阅
帮助(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

选项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
有关更多信息,请参阅
帮助(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

下面是我用过的东西:

testcon <- file("xyzfile.csv",open="r")
readsizeof <- 20000
nooflines <- 0
( while((linesread <- length(readLines(testcon,readsizeof))) > 0 ) 
nooflines <- nooflines+linesread )
close(testcon)
nooflines

testcon以下是我使用的一些东西:

testcon <- file("xyzfile.csv",open="r")
readsizeof <- 20000
nooflines <- 0
( while((linesread <- length(readLines(testcon,readsizeof))) > 0 ) 
nooflines <- nooflines+linesread )
close(testcon)
nooflines

testcon根据前1000行的大小估计行数

size1000  <- sum(nchar(readLines(con = "dgrp2.tgeno", n = 1000)))

sizetotal <- file.size("dgrp2.tgeno")
1000 *  sizetotal / size1000

size1000根据前1000行的大小估计行数

size1000  <- sum(nchar(readLines(con = "dgrp2.tgeno", n = 1000)))

sizetotal <- file.size("dgrp2.tgeno")
1000 *  sizetotal / size1000

size1000可能只是从命令行提示符下执行
wc-l yourfile.csv
之类的操作?如果文件大小为1 GB,您应该能够导入它。当然,您不应该对
read.table
和朋友这样做。使用package data.table中的
fread
。那么您是说
nrow(read.csv(“file.csv”,header=T/F))
R?是的,
fread
当然可以prefered@Alex不要对1GB文件使用
read.csv
。速度很慢。如果所有方法都崩溃,您可以使用csv拆分器将大文件拆分为块。。不是很优雅,但可能可以通过命令行提示符下的
wc-lyourfile.csv
或其他方式工作?如果文件大小为1GB,您应该可以导入它。当然,您不应该对
read.table
和朋友这样做。使用package data.table中的
fread
。那么您是说
nrow(read.csv(“file.csv”,header=T/F))
R?是的,
fread
当然可以prefered@Alex不要对1GB文件使用
read.csv
。速度很慢。如果所有方法都崩溃,您可以使用csv拆分器将大文件拆分为块。。虽然不优雅,但可能有效,选择2更好。data.table获胜。#选项2更好。关于“Windows”解决方案,请注意:(1)这是从
cmd.exe
运行的;(2)
filename
包含文件的完整路径(&将斜杠转过来);(3) 如果有一个标题,则该“行”被计数,即,一个标题+10行的文件将返回
11
。(所有这些都不会影响答案的质量。)关于“Windows”解决方案,请注意:(1)这是从
cmd.exe
运行的;(2)
filename
包含文件的完整路径(&将斜杠转过来);(3) 如果有一个标题,则该“行”被计数,即,一个标题+10行的文件将返回
11
。(所有这些都不会影响答案的质量。)