r - 如何在没有for循环的情况下获得相同的结果?
问题描述
我正在寻找另一种方法来实现相同的结果,因为 for 语句太慢了。
我有以下数据框。
'data.frame': 50000 obs. of 2 variables:
$ user_id: chr "user1@test.com" "user2@test.com" ......
$ result : logi NA NA ......
函数 f 接受一个用户 ID 并返回一个特定的结果。
f <- function(user_id){
......
return(json_result)
}
我想要的结果如下。
'data.frame': 50000 obs. of 2 variables:
$ user_id: chr "user1@test.com" "user2@test.com" ......
$ result : chr "{....}" "{....}" ......
我正在像下面的代码一样运行一个循环,但是速度太慢了。
for (t in df$user_id) {
print(t)
df$result[df$user_id==t] <- f(t)
}
每个用户大约需要 3 秒,3*50000 秒总共获得 50,000 个用户。
有没有其他方法可以更快地获得结果?
解决方案
或者,您可以使用 purrr 的地图功能。
library(tidyverse)
purrr::map(df$user_id, f)
这将输出一个列表,其中每个元素都是函数调用的输出。根据函数的输出,您可以使用map
变体来输出某种类型的向量。您可以在文档中阅读相关内容:https ://purrr.tidyverse.org/reference/map.html
推荐阅读
- sql - SQL Server:将 YYYYMMDD-HHMM 和 YYYYMMDD 转换为 mm/dd/yyyy hh:mm
- php - 谷歌日历 - 获取对参数没有反应的事件
- reactjs - Tailwind 插件无法激活
- python - Log mel Spectrogram-1 秒音频数据集-语音识别
- entity-framework - 如何在 ownsmany 中映射 TPH
- cassandra - cassandra 绑定变量产生错误:输入“?”没有可行的替代方案
- botframework - 过滤搜索消息扩展
- angular-tree-component - 加载中...标志没有消失
- python - 空列表作为默认参数 - 行为差异
- excel - 创建多个工作表为 pdf,无限循环