gar_batch_walk | R Documentation |
Convenience function for walking through data in batches
gar_batch_walk(
f,
walk_vector,
gar_pars = NULL,
gar_paths = NULL,
the_body = NULL,
pars_walk = NULL,
path_walk = NULL,
body_walk = NULL,
batch_size = 10,
batch_function = NULL,
data_frame_output = TRUE,
...,
batch_endpoint = getOption("googleAuthR.batch_endpoint", default =
"https://www.googleapis.com/batch")
)
f |
a function from |
walk_vector |
a vector of the parameter or path to change |
gar_pars |
a list of parameter arguments for f |
gar_paths |
a list of path arguments for f |
the_body |
a list of body arguments for f |
pars_walk |
a character vector of the parameter(s) to modify for each walk of f |
path_walk |
a character vector of the path(s) to modify for each walk of f |
body_walk |
a character vector of the body(s) to modify for each walk of f |
batch_size |
size of each request to Google /batch API |
batch_function |
a function that will act on the result list of each batch API call |
data_frame_output |
if the list of lists are dataframes, you can bind them all by setting to TRUE |
... |
further arguments passed to the data parse function of f |
batch_endpoint |
the batch API endpoint to send |
You can modify more than one parameter or path arg,
but it must be the same walked vector e.g. start = end = x
Many Google APIs have batch_size
limits greater than 10, 1000 is common.
The 'f' function needs to be a 'gar_api_generator()' function that uses one of 'path_args', 'pars_args' or 'body_args' to construct the URL (rather than say using 'sprintf()' to create the API URL).
You don't need to set the headers in the Google docs for batching API functions - those are done for you.
The argument 'walk_vector' needs to be a vector of the values of the arguments to walk over, which you indicate will walk over the pars/path or body arguments on the function via on of the '*_walk' arguments e.g. if walking over id=1, id=2, for a path argument then it would be 'path_walk="id"' and 'walk_vector=c(1,2,3,4)'
The 'gar_*' parameter is required to pass intended for other arguments to the function 'f' you may need to pass through.
'gar_batch_walk()' only supports changing one value at a time, for one or multiple arguments (I think only changing the 'start-date', 'end-date' example would be the case when you walk through more than one per call)
'batch_size' should be over 1 for batching to be of any benefit at all
The 'batch_function' argument gives you a way to operate on the parsed output of each call
if data_frame_output is FALSE: A list of lists. Outer list the length of number of batches required, inner lists the results from the calls
if data_frame_output is TRUE: The list of lists will attempt to rbind all the results
Other batch functions:
gar_batch()
## Not run:
# get a webproperty per account
getAccountInfo <- gar_api_generator(
"https://www.googleapis.com/analytics/v3/management/accounts",
"GET", data_parse_function = function(x) unique(x$items$id))
getWebpropertyInfo <- gar_api_generator(
"https://www.googleapis.com/analytics/v3/management/", # don't use sprintf to construct this
"GET",
path_args = list(accounts = "default", webproperties = ""),
data_parse_function = function(x) x$items)
walkData <- function(){
# here due to R lazy evaluation
accs <- getAccountInfo()
gar_batch_walk(getWebpropertyInfo,
walk_vector = accs,
gar_paths = list("webproperties" = ""),
path_walk = "accounts",
batch_size = 100, data_frame_output = FALSE)
}
# do the walk
walkData()
# to walk body data, be careful to modify a top level body name:
changed_emails <- lapply(email, function(x){userRef = list(email = x)})
batched <- gar_batch_walk(users,
walk_vector = changed_emails,
the_body = list(
permissions = list(
local = list(permissions)
),
userRef = list(
email = email[[1]]
)
),
body_walk = "userRef",
batch_size = 300,
data_frame_output = FALSE)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.