2017-11-02 12 views
1

私のチームが協力している成長するRプロジェクトを整理しようとしています。私の最初の考えは私のプロジェクトのすべてのRスクリプトの最初の行を読む

x = list.files(recursive = TRUE) 

リストにすべてのスクリプトの名前を入れて、私は時代遅れであり、どれがおそらく別々のプロジェクトを作成すべきスクリプトを考えて、通過することができますので、スプレッドシートにそれを置くことです。

ありがたいことに、ほとんどのスクリプトの一番上には、スクリプトの内容を要約する1行のコメントがあります。

これらのすべての最初のコメントをデータフレームに入れる方法はありますか?つまり、ファイル名からコード行を抽出するための関数がRにありますか?

答えて

2

と1つのデータフレームにすべて一緒に参加します。最初の行をすべて読み取るには、適用ループを使用します。結果をデータフレームに入れるだけです。

data.frame(comment = sapply(x, readLines, n = 1)) 

ここで、xはファイル名の文字ベクトルです。

+1

私の 'x 'を' x = list.files(pattern = "* .R"、recursive = TRUE) 'に変更すると、これが動作します。ありがとうございました。 – lebelinoz

0

次のことを試してみてください。

myRFiles = list.files(pattern = "*.R") 
firstLines = lapply(myRFiles, FUN = read.table, nrows = 1, sep = "\n") 
df = do.call(rbind, firstLines) 

myRFilesは(あなたのケースのためのパターンを変更する)すべてのRのファイルが含まれています。

read.tableを使用すると、最初の行(nrows=1)を読み取り、区切り文字として改行文字(\n)を使用して、1ファイルにつき1つの列のみを読み取ることができます。

は、最後にあなたがreadLines(n = 1)経由でファイルの最初の行を読み取ることができdo.callrbind

+0

'lapply'行は' FUN(X [[i]]、...)のエラー:最初の5行は空です。give up' – lebelinoz

+0

SOのユーザーは私を驚かせることはありません。答えは有効ではなく最初に投稿されたので、理由なしにダウン投票しました。 –

+0

@RSchifiniエラーメッセージに関する私の元のコメントはまだ保持されています:あなたの答えは動作しません。私はまだあなたに+1をくれました。 – lebelinoz

関連する問題