我正在学习 R 教程,并怀疑我必须使用其中一个函数,但我不确定是哪一个(是的,我研究了它们,但在我更加熟悉 R 术语之前,它们非常令人困惑)。
在我的工作目录中有一个文件夹“specdata”。 Specdata 包含数百个名为 001.csv - 300.csv 的 CSV 文件。
我正在开发的函数必须计算输入的 csv 文件数量的总行数。所以如果函数中的参数是1:10
每个文件都有 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 参数计算总行数?
read.csv
期望只读取一个文件,因此您需要循环文件,一种 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)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)