1

我有一个形式的函数输出(来自koRpus):令牌总数:887 类型总数:393

文本词汇多样性度量 MTLD:142.66 因子数量:6.22 因子大小:0.72 SD 令牌/因子:41.55(所有因子) 38(仅完整因子)

我想创建一个循环来存储 80 个不同文档的这些结果。我尝试了以下方法:

for (i in 1:length(infra$tableid)) {
  whypar <- paste(infra$whypar [infra[,1] ==i], collapse=" ")
wpi<- removeWords(whypar, stopwords("english"))

as.data.frame(wpi)
write.csv(data.frame(wpi), file= "wp.csv")

tagged.text <- tokenize("wp.csv", lang="en")

res.mtld <- MTLD(tagged.text)
  write.csv(data.frame(res.mtld),file="output.csv")
}

其中 infra 是:

tableid 1, 2, 3, ... 80
whypar "I took part because xxx", "I believe that jshfdjk", "jhsadkjhd" ... (N=350)

谢谢你的帮助

4

1 回答 1

1

首先提取您感兴趣的 MTLD 对象的部分。从您的问题来看,您似乎只对 MTLD 返回的对象的子集感兴趣,即 MTLD 分数、因子数、令牌/因子的 SD 和仅完整因子的 SD。如果您只想要每个文件的这些结果,您只需编写一个漂亮的表作为所有文件的输出:

res <- data.frame( ID = numeric() , MTLD=numeric() , Factor_Size=numeric() , SD=numeric() , SD_Complete=numeric() )
for (i in 1:length(infra$tableid)) {
  whypar <- paste(infra$whypar [infra[,1] ==i], collapse=" ")
  wpi<- removeWords(whypar, stopwords("english"))

  wpi <- as.data.frame(wpi)
  write.csv(data.frame(wpi), file= "wp.csv")

  tagged.text <- tokenize("wp.csv", lang="en")

  res.mtld <- MTLD(tagged.text)
  mtld <- res.mtld@MTLD$MTLD
  fac.size <-  res.mtld@param$factor.size
  mtld.sd <- res.mtld@MTLD$lengths$sd
  mtld.sd.compl <- res.mtld@MTLD$lengths$sd.compl
  res <- rbind( res , c( infra$tableid[i] , mtld, fac.size , mtld.sd , mtld.sd.compl ) )
}
  write.csv( res , file="output.csv" )

我希望这会有所帮助,但请检查这些是您想要返回的结果。

于 2013-02-19T17:50:33.790 回答