计数一系列的CSV文件的行数(Counting the number of rows of a se

2019-08-07 02:16发布

我通过的R教程工作和怀疑,我一定要使用这些功能之一,但我不知道这(是的,我研究他们,但直到我R中的术语变得更加流畅,他们是相当混乱)。

在我的工作目录下有一个文件夹“specdata”。 Specdata包含数百个名为001.csv CSV文件 - 300.csv。

我的工作函数必须计算行的总数的CSV文件的inputed数。 因此,如果在该函数的参数是1:10而且每个文件都有十行,返回100。

这是我到目前为止有:

complete <- function(directory,id = 1:332) {
    setpath <- paste("/Users/gcameron/Desktop",directory,sep="/")
    setwd(setpath)
    csvfile <- sprintf("%03d.csv", id)
    file <- read.csv(csvfile)
    nrow(file)
 }

这工作时,ID参数是一个数字,说17。但是,如果我说的输入10:50作为参数,我收到一个错误:

Error in file(file, "rt") : invalid 'description' argument

我应该怎么做才能够从在输入的ID参数计算行的总数?

Answer 1:

read.csv预计只需要读取一个文件,所以您需要遍历文件,这样做的A R惯用的方法是使用sapply

nrows <- sapply( csvfile, function(f) nrow(read.csv(f)) )
sum(nrows)

例如,这里是你的一个重写complete功能:

complete <- function(directory,id = 1:332) {
    csvfiles <- sprintf("/Users/gcameron/Desktop/%s/%03d.csv", directory, id)
    nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)) )
    sum(nrows)
}


Answer 2:

家庭作业的问题通常会得到标记为这样的,但我如果需要不知道,但是这显然是功课。

如写你的函数期望该ID是不是矢量(尽管默认值是一个整数向量)。

它改为使用的*应用功能之一(更简洁和普通),甚至是一个明确的循环。 在1D向量的每个元素,必须调用打开该文件,并计数观察的功能。

这个计算器后具有的*应用功能之间的差异一个很好的解释。



文章来源: Counting the number of rows of a series of csv files
标签: r apply lapply