我有一个emp.code
列表,我想通过REST API调用。对于每个名称,值将保存在一个数据帧中。如何在循环中传递列表,以便将所有输出附加到相同的data.frame。以下是我到目前为止写的。
for(k in 1:length(data$emp.Code)) {
res = GET(paste0("https://urlpart1",data$emp.Code[[k]],"&StartDate=01-01-2023&EndDate=02-28-2023"))
data = fromJSON(rawToChar(res$content))
data <- as.data.frame(fromJSON(rawToChar(res$content)))
}
使用lapply
代替for
循环并将其包裹在do.call(what='rbind', ...)
中。
res <- do.call(lapply(seq_along(data$emp.Code), function(k) {
u <- GET(paste0("https://urlpart1", data$emp.Code[[k]],
"&StartDate=01-01-2023&EndDate=02-28-2023"))
data <- fromJSON(rawToChar(u$content))
as.data.frame(fromJSON(rawToChar(u$content)))
}), what="rbind")
可以初始化data.frame对象,并在循环中将其绑定到同一个对象
data <- data.frame()
for(k in 1:length(data$emp.Code)) {
res = GET(paste0("https://urlpart1",data$emp.Code[[k]],"&StartDate=01-01-2023&EndDate=02-28-2023"))
tmp = fromJSON(rawToChar(res$content))
data <- rbind(data, as.data.frame(tmp))
}