用于创建和使用-csv的R循环

时间:2013-02-19 17:00:39

标签: r loops output

我有一个函数输出(来自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)

感谢您的帮助

1 个答案:

答案 0 :(得分: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" )

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