我有一个列表users_vs_tags
,其中包含用户'最喜欢的标签按降序排列。我有一个数据框users_vs_items
,表示用户过去喜欢的项目。我有一个数据框items_vs_tags
,表示哪些项与哪些标签相关。我想生成一个数据框ranked_users_vs_items
,如果用户不喜欢他最喜欢的标签中的项目,那么项目将被赋予良好的排名。我已经编写了代码。
for(i in names(users_vs_tags))
{counter<-1
for(j in colnames(users_vs_tags[[i]]))
{
for(k in rownames(items_vs_tags))
{
if((items_vs_tags[['k']][['j']]==1)&(users_vs_items[['i']][['k']]==0))
{
ranked_users_vs_items[['i']][['k']]<-counter
counter<-counter+1
}
}
}
}
使用此嵌套for循环,我应该能够根据非喜欢的项目历史记录和喜欢的标记历史记录为特定用户排列项目。但是,永远不应该在R中使用嵌套for循环,因为它们非常慢。我正在考虑使用lapply,但无法想出使用它的方法。有人能引导我朝正确的方向发展吗?