【发布时间】:2020-08-17 03:35:05
【问题描述】:
我需要将 234 条评论数据合二为一。
--
但我必须使用循环自动执行此操作
有人有什么想法吗?
【问题讨论】:
标签: r dataframe for-loop while-loop
我需要将 234 条评论数据合二为一。
但我必须使用循环自动执行此操作
有人有什么想法吗?
【问题讨论】:
标签: r dataframe for-loop while-loop
更好的是,你可以使用lapply:
do.call("rbind", lapply(1:10, function(x) data.frame(getReviews(368677368, "us", x))))
或者,使用for 循环:
db_list <- list()
for(i in 1:10)
{
db_list[[i]] <- data.frame(getReviews(368677368, "us", i))
}
final_result <- do.call("rbind", db_list)
【讨论】:
getReviews 返回一个数据框,那么我显示的第二个代码应该在final_result 中留下一个数据框
output 不是我回答的一部分。如果您在我上面的答案中运行第二个代码块,final_result 应该是单个数据帧。在你的演示中,你只给我看output,相当于我的db_list。你应该可以从do.call("rbind", db_list) 或do.call("rbind", output) 得到你想要的结果
我不知道你的函数 getReviews 做了什么,所以我把它存根:
getReviews <- function(pp_id, country, page_num){
data.frame(pp_id, country, page_num)
}
这是for 循环。
output <- NULL # Best practice is to pre-declare
cases <- 1:10
for(i in seq_along(cases)){ # seq_along is better
output[[i]] <- getReviews(368677368, "us", i)
}
bind_rows(output)
参考:R for Data Science,H Wickham,第 1 版,第 314 页
【讨论】:
bind_rows。但你真的应该使用map_df 而不是for 循环。