如何解决在没有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秒,而获得50,000个用户则需要3 * 50000秒。
还有其他方法可以更快地获得结果吗?
解决方法
您正在寻找lapply
函数:
df$result <- lapply(df$user_id,f)
,
或者,您可以使用purrr的地图函数。
library(tidyverse)
purrr::map(df$user_id,f)
这将输出一个列表,其中每个元素都是函数调用的输出。根据函数的输出,可以使用map
变体来输出某种类型的向量。您可以在文档中阅读以下内容:https://purrr.tidyverse.org/reference/map.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。