0

この質問は、順次ラベル付けされた dataframes で関数を繰り返すことについて私が尋ねた以前の質問の詳細です。

data.tables以前は、フォルダーから R に読み込むために小さな変更を加える必要がありました (日付の変更、再コーディングなど)。

ただし、私の目標はもう少し複雑です。フォルダーからいくつかのテキスト ファイルを読み込み、それらの文字ベクトルからランダム サンプルを取得し、ランダム サンプルをコーパスに読み込み (パッケージを使用tm)、生成したいと考えています。data.frame単語/フレーズとその頻度のリストを持つ新しい。

これまでに開発したコードは次のとおりです。

BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 1, max = 5)) # Finds words or phrases
files <- list.files("~/path/", full.names = TRUE, pattern="\\.txt$") # Reads in files

out <- lapply(1:length(files), function(x) {
  df <- scan(files[x], what="", sep="\n") # Read in files
  df<-sample(c(df),size=1500,replace=F) # Take random sample
  corpus <- Corpus(VectorSource(df)) # Create corpus
  corpus <- tm_map(corpus, stripWhitespace)
  corpus <- tm_map(corpus, tolower)
  corpus <- tm_map(corpus, removeWords, stopwords("english"))
  tdm <- TermDocumentMatrix(corpus, control = list(tokenize = BigramTokenizer)) #Create term document matrix
  m <- as.matrix(tdm)
  v <- sort(rowSums(m),decreasing=TRUE)
  d <- data.frame(word = names(v),freq=v) # Create new dataframe with words & their frequencies
})

ただし、この関数は機能しますがd、残りを破棄して data.frames のみにアクセスする方法がわかりませんか? outで作成されたすべてのオブジェクトが含まれていますかlapply?

4

2 に答える 2

2

関数は、指定されたlapply関数によって返される値を含むリストを返します。あなたの例では、関数はに割り当てられているデータ フレームのみを返すためd、データ フレームoutのみを含むリストになりますd。関数によって作成された他のすべてのオブジェクト ( tdmm、および などv) は破棄されます。

のデータ フレームにアクセスするoutには、out[[1]] のように、lapply を使用してlapply(out, function(d) d$word)、または と組み合わせて、インデックスを付けますdo.call('rbind', out)

于 2013-05-09T17:59:00.727 に答える