0

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))のエラー:文字ベクトル引数が必要です"

4

1 に答える 1

1

A (関数内):

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
           )
       }

B (関数外):

 compdf <- complete()
row.names(compdf) <- 1:NROW(compdf)
于 2013-01-16T17:48:55.767 に答える