【发布时间】:2013-01-16 21:19:54
【问题描述】:
完成我很难理解的 R 教程。
目录是一个包含大量 csv 文件的文件夹。该函数将多个文件中的一个作为 id,并返回每个文件中的记录数。
我的功能:
complete <- function(directory,id = 1:332) {
csvfiles <- sprintf("/Users/myname/Desktop/%s/%03d.csv", directory, id)
nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))
data.frame(ID=sprintf('%03d', id),
countrows=sapply(csvfiles,function(x) length(count.fields(x))),
row.names=id
)
}
然后完成("specdata", 100:105) 返回
ID countrows
100 100 1097
101 101 731
102 102 1462
103 103 3653
104 104 2558
105 105 2192
我必须怎么做才能使最左边的列是从 1 开始的序列?因此,例如,第一条记录是 1 100 和 1092,第二条记录是 2 101 和 731
【问题讨论】:
-
您的数据框只有两列。您的第一个“列”实际上只是行名。您可以使用
rownames(specdata) <- 1:5更改此设置 -
您也在函数中明确设置行名 - 删除此行:
row.names=id -
@thelatemail 我做了,但随后得到了完整的目录,如下所示: id nobs /Users/myname/Desktop/specdata/100.csv 100 1097 /Users/myname/Desktop/specdata/101.csv 101 731等