【发布时间】:2021-05-28 15:43:01
【问题描述】:
我有一个推文数据集,我从中提取提及的人的列表,然后对于每个提及,我在不同的数据框中创建一个单独的行。如果原始数据如下所示:
用户 |鸣叫
一个 | @B @C @D 嘿,伙计们,怎么了
我让它看起来像:
用户 |提及
一个 |乙
一个 | C
一个 | D
问题是,我为此使用 for 循环,它会随着时间的推移而变慢。前 10000 个实例发生得非常快,然后每秒经过 1000 个实例,当它达到 200K 时,它每秒执行 25 个实例。这是我的代码。我可以做些什么来提高性能?有超过 500 万条推文,这太慢了。
#create edge df
networks <- data.frame(user = character(),
mentions=character(),
stringsAsFactors=FALSE)
#get all mentioned
mentionlist <- str_extract_all(tweets$tweet, "(?<=^|\\s)@[^\\s]+")
#start collecting edges
a <- 0
b <- 0
for(i in mentionlist){
a <- a+1
for(j in i){
b <- b+1
networks[b,1] <- tweets[a,9]
networks[b,2] <- j
print(b) #to keep track of it
#print(paste0(j, " ", tweets[a,8], " ",networks[b,1] ))
}
}
【问题讨论】: