在使用r传递列表后更新for循环中的数据框架



我有一个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))
}

最新更新