2

特定のディレクトリからすべてのファイルを取得し、条件に一致するそれらのファイルに対していくつかのコマンドを実行する関数を作成しています。基準の1つは、ファイルの名前が「test.csv」であってはならず、もう1つはpngファイルであってはならないということです。これで、test.csvの機能は正常に機能しますが、Rにpngファイルを無視させることができないため、残念ながら、作業ディレクトリにpngファイルがある限り、スクリプトは機能しません。これが私の関数からの抜粋です:

file_list = list.files()

for (file in file_list){
  if ((file != "test.csv") & (grep(".*png", file) != 1)){
    my.file <- read.table(file)
  }
}

、などのgrepコマンドのさまざまなバリエーションを試しましたが、何も機能しませんでした。何が悪いのか考えてみませんか?grep(".*png", file) == 0length(grep(".*png", file)) < 1

4

1 に答える 1

2

greplパターンが問題の文字列に表示されるかどうかに関する論理を返す、を使用するのはどうですか。

!grepl(".*png", file)

また、正規表現を変更して、ファイル名の末尾にある「.png」を具体的に検索します。".*\\.png$"

したがって、コードを次のように変更できます

for (file in file_list){
#  if ((file != "test.csv") & !grepl(".*\\.png$", file)){
# Actually, you could move both tests into one call to grepl:
  if(!grepl("test.csv|.*\\.png$", file)){
    my.file <- read.table(file)
  }
}
于 2012-05-14T11:54:40.177 に答える