我将2个API(应用程序编程接口)导入R:
library(jsonlite)
library(dplyr)
a0 <- fromJSON("https://hello.com/users/0/bets")
a1 <- fromJSON("https://hello.com/users/1/bets")
我从每个API获取数据框:
a0 <- df0
a1 <- df1
使用bind_rows
库中的dplyr
,将两个数据帧合并为一个(我也可以使用rbind.data.frame
):
a <- bind_rows(a1, a2)
我总共有500个API,范围从https://hello.com/users/0/bets
到https://hello.com/users/499/bets
,所以我想为所有这些API做上面的工作。
我似乎无法找到解决方案,所以有人可以帮忙吗?
答案 0 :(得分:1)
类似的东西:
do.call(rbind)
将所有数据帧放在一起。。
result_list <- vector(mode="list", length=500)
for(bet in 0:499) {
this_url <- paste0("https://hello.com/users/", bet, "/bets")
result_list[[bet]] <- fromJSON(this_url)
}
result <- do.call(rbind, result_list)
答案 1 :(得分:0)
如果要使用import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Function;
class Person {
String name ;
PersonalDetail pDetail;
public Person(String name, PersonalDetail pDetail) {
super();
this.name = name;
this.pDetail = pDetail;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public PersonalDetail getpDetail() {
return pDetail;
}
public void setpDetail(PersonalDetail pDetail) {
this.pDetail = pDetail;
}
}
class PersonalDetail{
BirthDate birthDate;
public BirthDate getBirthDate() {
return birthDate;
}
public void setBirthDate(BirthDate birthDate) {
this.birthDate = birthDate;
}
public PersonalDetail(BirthDate birthDate) {
super();
this.birthDate = birthDate;
}
}
class BirthDate {
public String getBirthdate() {
return birthdate;
}
public void setBirthdate(String birthdate) {
this.birthdate = birthdate;
}
String birthdate;
public BirthDate(String birthdate) {
super();
this.birthdate = birthdate;
}
}
public class Test1 {
public static void main(String[] args) {
BirthDate b1 = new BirthDate("2019-08-08");
BirthDate b2 = new BirthDate("2025-09-09");
BirthDate b3 = new BirthDate("2025-09-08");
BirthDate b4 = new BirthDate("2024-09-08");
PersonalDetail pd1 = new PersonalDetail(b1);
PersonalDetail pd2 = new PersonalDetail(b2);
PersonalDetail pd3 = new PersonalDetail(b3);
PersonalDetail pd4 = new PersonalDetail(b4);
Person p1 = new Person("P1",pd1);
Person p2 = new Person("P2",pd2);
Person p3 = new Person("P3",pd3);
Person p4 = new Person("P4",pd4);
List<Person> persons = new ArrayList();
persons.add(p1);
persons.add(p2);
persons.add(p3);
persons.add(p4);
Function<Person, PersonalDetail> getCourse = Person::getpDetail;
Person minByAge = persons.stream()
.max(Comparator.comparing(getCourse.andThen(PersonalDetail::getBirthDate).andThen(BirthDate::getBirthdate))).get();
System.out.println(maxByAge.getName());
}
}
/ map
中的purrr
函数,可以一行完成。 tidyverse
是一个函数,该函数基本上调用map_dfr
以将某个函数应用于列表(在本例中为map
),然后调用fromJSON
以将reduce
应用于列表中的所有元素,返回一个数据帧。
实际上,如果您的URL如此简单,只包含一个整数,则可以bind_rows
取代map
,创建一个具有该整数的URL,然后调用1:500
。我正在使用fromJSON
来创建URL,但是如果实际的URL格式不同,则可以进行调整。
stringr::str_glue