提问人:la_lo_ca 提问时间:3/23/2023 最后编辑:la_lo_ca 更新时间:3/23/2023 访问量:23
仅在大数据帧中发生的 while 循环错误
while loop error which only occurs with a big data frame
问:
我正在尝试从一个非常大的文本文件中随机抽取行。 当我在一个小子集上运行我的代码时,它就像一个魅力,但当使用真正的语料库(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 的缺失值
请问有人能帮忙吗?
答: 暂无答案
下一个:日期序列中的 While 循环
评论
while
NA