2列のデータフレーム(テーブル?)を返す関数を使用しています。
関数は次のとおりです。
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))))
}
サンプル出力:
ID countrows
/Users/myname/Desktop/specdata/100.csv 100 1097
/Users/myname/Desktop/specdata/101.csv 101 731
そのファイルパスの番号だけを表示する出力が必要です。したがって、最初のレコードは100だけ、2番目のレコードは101などを読み取る必要があります。
これはコンソールで仕事をします
colID <- sprintf('%03d', 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))))
そして私は試しました:
complete <- function(directory,id = 1:332) {
csvfiles <- sprintf("/Users/myname/Desktop/%s/%03d.csv", directory, id)
colID <- sprintf('%03d', id)
nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))
data.frame(ColID, countrows=sapply(csvfiles,function(x) length(count.fields(x))))
}
私はほんの一歩離れていると確信していますか?
以下のフィードバックに基づく
私はこれを試しました
complete <- function(directory,id = 1:332) {
csvfiles <- sprintf("/Users/myname/Desktop/%s/%03d.csv", directory, id)
colID <- sprintf('%03d', id)
nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))
data.frame(ID=id, countrows=sapply(csvfiles,function(x) length(count.fields(x))))
row.names(colID) <- basename(row.names(colID))
}
これはエラーを返します: "basename(row.names(colID))のエラー:文字ベクトル引数が必要です"