仅在大数据帧中发生的 while 循环错误

while loop error which only occurs with a big data frame

提问人:la_lo_ca 提问时间:3/23/2023 最后编辑:la_lo_ca 更新时间:3/23/2023 访问量:23

问:

我正在尝试从一个非常大的文本文件中随机抽取行。 当我在一个小子集上运行我的代码时,它就像一个魅力,但当使用真正的语料库(44mio 行)时会失败。

我的代码如下:

#create minimal example data frame
lipsum <- "Lorem ipsum dolor sit amet consectetur adipiscing elit Nullam vehicula sollicitudin justo sed condimentum Curabitur nec lorem pellentesque facilisis elit ac rutrum orci Sed gravida ac est ac volutpat Praesent vitae metus ac nisi scelerisque porta in luctus lacus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas Phasellus massa lacus accumsan vitae sem ullamcorper consectetur convallis ligula Morbi metus nulla accumsan id venenatis et efficitur vitae diam Vestibulum auctor aliquet finibus Donec sodales blandit dolor non viverra orci fermentum quis In dignissim felis massa quis porta diam pretium eget Sed molestie ante pharetra risus mattis"
corpus <- data.frame(c(1:100))
corpus$V1 <- lipsum
corpus <- data.frame(corpus[,"V1"])


library(dplyr)
library(tidyr)


for(i in 1:dim(corpus)[1]){
  string <- corpus[i,1]
  nwords<-lengths(strsplit(string, "\\W+"))
  corpus[i,2] <-nwords
  corpus[i,3] <- i
}


seed_count <- 1:100
for(i in seed_count){
  set.seed(i)
  
  complete_corpus <- corpus
  
  n_words_doc <- 0
  new_doc = data.frame()
  while (n_words_doc < 1000) { # for the large corpus this will be 7846610
    chosen_row <- sample_n(complete_corpus, 1)
    n_words_doc <- n_words_doc + chosen_row[1,2]
    complete_corpus <- complete_corpus[-chosen_row[1,3],]
    new_doc <- rbind(new_doc, chosen_row)
  }
  corpus_boot <- data.frame(new_doc[,1])
  write.table(corpus_boot, paste("corpus_boot_",i,".txt", sep=""), col.names = F, row.names = F, quote = F)
}

当语料库有 100 行时,这运行良好,但使用我的原始文档有 44mio 行会产生:

错误 while (n_words_doc < 1000) { : 需要 TRUE/FALSE 的缺失值

请问有人能帮忙吗?

r while-loop 大数据

评论

0赞 Pax 3/23/2023
我猜在其中一个迭代中。在 -语句中,计算结果为 。只是一个猜测!whileNA
1赞 la_lo_ca 3/29/2023
哦,亲爱的 - 真是菜鸟错误,谢谢!

答: 暂无答案