A follow-up to this question: is it possible to apply unnest_wider
recursively, until no more list columns are left?
I'm working with a deeply nested data set, where one list column has a single level (one unnest_wider
call does the trick); but another has 228-237 list columns of varying depths. I want to 'explode' the entire data set so that it's tidy, with all columns available at the top of the hierarchy.
Here's a sample:
structure(list(fullVisitorId = c("2248281639583218707", "8647436381089107732"
), date = c("20170801", "20170801"), visitStartTime = c(1501583974L,
1501616585L), totals = list(list(visits = 1L, hits = 1L, pageviews = 1L,
timeOnSite = NA_integer_, bounces = 1L, transactions = NA_integer_,
transactionRevenue = NA_integer_, newVisits = 1L, screenviews = NA_integer_,
uniqueScreenviews = NA_integer_, timeOnScreen = NA_integer_,
totalTransactionRevenue = NA_integer_, sessionQualityDim = 1L),
list(visits = 1L, hits = 1L, pageviews = 1L, timeOnSite = NA_integer_,
bounces = 1L, transactions = NA_integer_, transactionRevenue = NA_integer_,
newVisits = 1L, screenviews = NA_integer_, uniqueScreenviews = NA_integer_,
timeOnScreen = NA_integer_, totalTransactionRevenue = NA_integer_,
sessionQualityDim = 1L)), channelGrouping = c("Organic Search",
"Organic Search"), hits = list(structure(list(hitNumber = 1L,
time = 0L, hour = 3L, minute = 39L, isSecure = NA, isInteraction = TRUE,
isEntrance = TRUE, isExit = TRUE, referer = "http://www.google.com/",
page = list(list(pagePath = "/google+redesign/electronics",
hostname = "shop.googlemerchandisestore.com", pageTitle = "Electronics | Google Merchandise Store",
searchKeyword = NA_character_, searchCategory = NA_character_,
pagePathLevel1 = "/google+redesign/", pagePathLevel2 = "/electronics",
pagePathLevel3 = "", pagePathLevel4 = "")), transaction = list(
list(transactionId = NA_character_, transactionRevenue = NA_integer_,
transactionTax = NA_integer_, transactionShipping = NA_integer_,
affiliation = NA_character_, currencyCode = "USD",
localTransactionRevenue = NA_integer_, localTransactionTax = NA_integer_,
localTransactionShipping = NA_integer_, transactionCoupon = NA_character_)),
item = list(list(transactionId = NA_character_, productName = NA_character_,
productCategory = NA_character_, productSku = NA_character_,
itemQuantity = NA_integer_, itemRevenue = NA_integer_,
currencyCode = "USD", localItemRevenue = NA_integer_)),
contentInfo = list(structure(list(NULL), .Names = "")), appInfo = list(
list(name = NA_character_, version = NA_character_, id = NA_character_,
installerId = NA_character_, appInstallerId = NA_character_,
appName = NA_character_, appVersion = NA_character_,
appId = NA_character_, screenName = "shop.googlemerchandisestore.com/google+redesign/electronics",
landingScreenName = "shop.googlemerchandisestore.com/google+redesign/electronics",
exitScreenName = "shop.googlemerchandisestore.com/google+redesign/electronics",
screenDepth = "0")), exceptionInfo = list(list(description = NA_character_,
isFatal = TRUE, exceptions = NA_integer_, fatalExceptions = NA_integer_)),
eventInfo = list(structure(list(NULL, NULL, NULL, NULL), .Names = c("",
"", "", ""))), product = list(structure(list(productSKU = c("GGOEGBFC018799",
"GGOEGESB015199", "GGOEGEVA022399", "GGOEGCBB074199", "GGOEGFKA022299",
"GGOEGCBB074399", "GGOEGCBC074299", "GGOEGEHQ072499", "GGOEGEHQ072599",
"GGOEGESB015099", "GGOEGESC014099", "GGOEGESQ016799"), v2ProductName = c("Electronics Accessory Pouch",
"Google Flashlight", "Micro Wireless Earbud", "Google Car Clip Phone Holder",
"Keyboard DOT Sticker", "Google Device Holder Sticky Pad",
"Google Device Stand", "Google 2200mAh Micro Charger", "Google 4400mAh Power Bank",
"Basecamp Explorer Powerbank Flashlight", "Rocket Flashlight",
"Plastic Sliding Flashlight"), v2ProductCategory = c("Home/Electronics/",
"Home/Electronics/", "Home/Electronics/", "Home/Electronics/",
"Home/Electronics/", "Home/Electronics/", "Home/Electronics/",
"Home/Electronics/", "Home/Electronics/", "Home/Electronics/",
"Home/Electronics/", "Home/Electronics/"), productVariant = c("(not set)",
"(not set)", "(not set)", "(not set)", "(not set)", "(not set)",
"(not set)", "(not set)", "(not set)", "(not set)", "(not set)",
"(not set)"), productBrand = c("(not set)", "(not set)",
"(not set)", "(not set)", "(not set)", "(not set)", "(not set)",
"(not set)", "(not set)", "(not set)", "(not set)", "(not set)"
), productRevenue = c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), localProductRevenue = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_), productPrice = c(4990000L, 59990000L, 39990000L,
6990000L, 1500000L, 4990000L, 4990000L, 22990000L, 37990000L,
22990000L, 4990000L, 12990000L), localProductPrice = c(4990000L,
59990000L, 39990000L, 6990000L, 1500000L, 4990000L, 4990000L,
22990000L, 37990000L, 22990000L, 4990000L, 12990000L), productQuantity = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_), productRefundAmount = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
), localProductRefundAmount = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
), isImpression = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE), isClick = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA), customDimensions = list(
structure(list(index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), customMetrics = list(
structure(list(index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), productListName = c("Category",
"Category", "Category", "Category", "Category", "Category",
"Category", "Category", "Category", "Category", "Category",
"Category"), productListPosition = 1:12, productCouponCode = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_)), row.names = c(NA,
-12L), class = c("tbl_df", "tbl", "data.frame"))), promotion = list(
structure(list(promoId = character(0), promoName = character(0),
promoCreative = character(0), promoPosition = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), promotionActionInfo = list(
structure(list(NULL, NULL), .Names = c("", ""))), refund = list(
structure(list(NULL, NULL), .Names = c("", ""))), eCommerceAction = list(
list(action_type = "0", step = 1L, option = NA_character_)),
experiment = list(structure(list(experimentId = character(0),
experimentVariant = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), publisher = list(
structure(list(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL), .Names = c("", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", ""))),
customVariables = list(structure(list(index = integer(0),
customVarName = character(0), customVarValue = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), customDimensions = list(
structure(list(index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), customMetrics = list(
structure(list(index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), type = "PAGE",
social = list(list(socialInteractionNetwork = NA_character_,
socialInteractionAction = NA_character_, socialInteractions = NA_integer_,
socialInteractionTarget = NA_character_, socialNetwork = "(not set)",
uniqueSocialInteractions = NA_integer_, hasSocialSourceReferral = "No",
socialInteractionNetworkAction = " : ")), latencyTracking = list(
structure(list(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), .Names = c("",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
""))), sourcePropertyInfo = list(structure(list(NULL,
NULL), .Names = c("", ""))), contentGroup = list(list(
contentGroup1 = "(not set)", contentGroup2 = "Electronics",
contentGroup3 = "(not set)", contentGroup4 = "(not set)",
contentGroup5 = "(not set)", previousContentGroup1 = "(entrance)",
previousContentGroup2 = "(entrance)", previousContentGroup3 = "(entrance)",
previousContentGroup4 = "(entrance)", previousContentGroup5 = "(entrance)",
contentGroupUniqueViews1 = NA_integer_, contentGroupUniqueViews2 = 1L,
contentGroupUniqueViews3 = NA_integer_, contentGroupUniqueViews4 = NA_integer_,
contentGroupUniqueViews5 = NA_integer_)), dataSource = "web",
publisher_infos = list(structure(list(dfpClicks = integer(0),
dfpImpressions = integer(0), dfpMatchedQueries = integer(0),
dfpMeasurableImpressions = integer(0), dfpQueries = integer(0),
dfpRevenueCpm = integer(0), dfpRevenueCpc = integer(0),
dfpViewableImpressions = integer(0), dfpPagesViewed = integer(0),
adsenseBackfillDfpClicks = integer(0), adsenseBackfillDfpImpressions = integer(0),
adsenseBackfillDfpMatchedQueries = integer(0), adsenseBackfillDfpMeasurableImpressions = integer(0),
adsenseBackfillDfpQueries = integer(0), adsenseBackfillDfpRevenueCpm = integer(0),
adsenseBackfillDfpRevenueCpc = integer(0), adsenseBackfillDfpViewableImpressions = integer(0),
adsenseBackfillDfpPagesViewed = integer(0), adxBackfillDfpClicks = integer(0),
adxBackfillDfpImpressions = integer(0), adxBackfillDfpMatchedQueries = integer(0),
adxBackfillDfpMeasurableImpressions = integer(0), adxBackfillDfpQueries = integer(0),
adxBackfillDfpRevenueCpm = integer(0), adxBackfillDfpRevenueCpc = integer(0),
adxBackfillDfpViewableImpressions = integer(0), adxBackfillDfpPagesViewed = integer(0),
adxClicks = integer(0), adxImpressions = integer(0),
adxMatchedQueries = integer(0), adxMeasurableImpressions = integer(0),
adxQueries = integer(0), adxRevenue = integer(0), adxViewableImpressions = integer(0),
adxPagesViewed = integer(0), adsViewed = integer(0),
adsUnitsViewed = integer(0), adsUnitsMatched = integer(0),
viewableAdsViewed = integer(0), measurableAdsViewed = integer(0),
adsPagesViewed = integer(0), adsClicked = integer(0),
adsRevenue = integer(0), dfpAdGroup = character(0), dfpAdUnits = character(0),
dfpNetworkId = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")))), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(hitNumber = 1L, time = 0L,
hour = 12L, minute = 43L, isSecure = NA, isInteraction = TRUE,
isEntrance = TRUE, isExit = TRUE, referer = "https://www.google.com/",
page = list(list(pagePath = "/google+redesign/apparel/mens/mens+outerwear",
hostname = "shop.googlemerchandisestore.com", pageTitle = "Men's Outerwear | Apparel | Google Merchandise Store",
searchKeyword = NA_character_, searchCategory = NA_character_,
pagePathLevel1 = "/google+redesign/", pagePathLevel2 = "/apparel/",
pagePathLevel3 = "/mens/", pagePathLevel4 = "/mens+outerwear")),
transaction = list(list(transactionId = NA_character_, transactionRevenue = NA_integer_,
transactionTax = NA_integer_, transactionShipping = NA_integer_,
affiliation = NA_character_, currencyCode = "USD", localTransactionRevenue = NA_integer_,
localTransactionTax = NA_integer_, localTransactionShipping = NA_integer_,
transactionCoupon = NA_character_)), item = list(list(
transactionId = NA_character_, productName = NA_character_,
productCategory = NA_character_, productSku = NA_character_,
itemQuantity = NA_integer_, itemRevenue = NA_integer_,
currencyCode = "USD", localItemRevenue = NA_integer_)),
contentInfo = list(structure(list(NULL), .Names = "")), appInfo = list(
list(name = NA_character_, version = NA_character_, id = NA_character_,
installerId = NA_character_, appInstallerId = NA_character_,
appName = NA_character_, appVersion = NA_character_,
appId = NA_character_, screenName = "shop.googlemerchandisestore.com/google+redesign/apparel/mens/mens+outerwear",
landingScreenName = "shop.googlemerchandisestore.com/google+redesign/apparel/mens/mens+outerwear",
exitScreenName = "shop.googlemerchandisestore.com/google+redesign/apparel/mens/mens+outerwear",
screenDepth = "0")), exceptionInfo = list(list(description = NA_character_,
isFatal = TRUE, exceptions = NA_integer_, fatalExceptions = NA_integer_)),
eventInfo = list(structure(list(NULL, NULL, NULL, NULL), .Names = c("",
"", "", ""))), product = list(structure(list(productSKU = c("GGOEGAAX0313",
"GGOEGAAX0358", "GGOEGAAX0568", "GGOEGAAX0592", "GGOEGAAX0593",
"GGOEGAAX0598", "GGOEGAAX0595", "GGOEGAAX0596", "GGOEGAAX0569",
"GGOEGAAX0567", "GGOEGAAX0731"), v2ProductName = c("Google Tri-blend Hoodie Grey",
"Google Men's Zip Hoodie", "Google Men's Watershed Full Zip Hoodie Grey",
"Google Men's Airflow 1/4 Zip Pullover Black", "Google Men's Airflow 1/4 Zip Pullover Lapis",
"Google Men's Convertible Vest-Jacket Pewter", "Google Men's Microfiber 1/4 Zip Pullover Blue/Indigo",
"Google Men's Quilted Insulated Vest Black", "Google Men's Performance Full Zip Jacket Black",
"Google Men's Softshell Jacket Black/Grey", "YouTube Men's Fleece Hoodie Black"
), v2ProductCategory = c("Home/Apparel/Men's/Men's-Outerwear/",
"Home/Apparel/Men's/Men's-Outerwear/", "Home/Apparel/Men's/Men's-Outerwear/",
"Home/Apparel/Men's/Men's-Outerwear/", "Home/Apparel/Men's/Men's-Outerwear/",
"Home/Apparel/Men's/Men's-Outerwear/", "Home/Apparel/Men's/Men's-Outerwear/",
"Home/Apparel/Men's/Men's-Outerwear/", "Home/Apparel/Men's/Men's-Outerwear/",
"Home/Apparel/Men's/Men's-Outerwear/", "Home/Apparel/Men's/Men's-Outerwear/"
), productVariant = c("(not set)", "(not set)", "(not set)",
"(not set)", "(not set)", "(not set)", "(not set)", "(not set)",
"(not set)", "(not set)", "(not set)"), productBrand = c("(not set)",
"(not set)", "(not set)", "(not set)", "(not set)", "(not set)",
"(not set)", "(not set)", "(not set)", "(not set)", "(not set)"
), productRevenue = c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_), localProductRevenue = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
), productPrice = c(39990000L, 55990000L, 109990000L, 69990000L,
69990000L, 98990000L, 74990000L, 74990000L, 119990000L, 98990000L,
55990000L), localProductPrice = c(39990000L, 55990000L, 109990000L,
69990000L, 69990000L, 98990000L, 74990000L, 74990000L, 119990000L,
98990000L, 55990000L), productQuantity = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), productRefundAmount = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
), localProductRefundAmount = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), isImpression = c(TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE
), isClick = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
), customDimensions = list(structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(index = integer(0),
value = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame"))), customMetrics = list(structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), productListName = c("Category",
"Category", "Category", "Category", "Category", "Category",
"Category", "Category", "Category", "Category", "Category"
), productListPosition = 1:11, productCouponCode = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_)), row.names = c(NA, -11L), class = c("tbl_df",
"tbl", "data.frame"))), promotion = list(structure(list(promoId = character(0),
promoName = character(0), promoCreative = character(0),
promoPosition = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame"))), promotionActionInfo = list(structure(list(
NULL, NULL), .Names = c("", ""))), refund = list(structure(list(
NULL, NULL), .Names = c("", ""))), eCommerceAction = list(
list(action_type = "0", step = 1L, option = NA_character_)),
experiment = list(structure(list(experimentId = character(0),
experimentVariant = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), publisher = list(
structure(list(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL), .Names = c("", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", ""))),
customVariables = list(structure(list(index = integer(0),
customVarName = character(0), customVarValue = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), customDimensions = list(
structure(list(index = integer(0), value = character(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), customMetrics = list(
structure(list(index = integer(0), value = integer(0)), row.names = c(NA,
0L), class = c("tbl_df", "tbl", "data.frame"))), type = "PAGE",
social = list(list(socialInteractionNetwork = NA_character_,
socialInteractionAction = NA_character_, socialInteractions = NA_integer_,
socialInteractionTarget = NA_character_, socialNetwork = "(not set)",
uniqueSocialInteractions = NA_integer_, hasSocialSourceReferral = "No",
socialInteractionNetworkAction = " : ")), latencyTracking = list(
structure(list(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), .Names = c("",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
""))), sourcePropertyInfo = list(structure(list(NULL,
NULL), .Names = c("", ""))), contentGroup = list(list(
contentGroup1 = "(not set)", contentGroup2 = "Apparel",
contentGroup3 = "(not set)", contentGroup4 = "(not set)",
contentGroup5 = "(not set)", previousContentGroup1 = "(entrance)",
previousContentGroup2 = "(entrance)", previousContentGroup3 = "(entrance)",
previousContentGroup4 = "(entrance)", previousContentGroup5 = "(entrance)",
contentGroupUniqueViews1 = NA_integer_, contentGroupUniqueViews2 = 1L,
contentGroupUniqueViews3 = NA_integer_, contentGroupUniqueViews4 = NA_integer_,
contentGroupUniqueViews5 = NA_integer_)), dataSource = "web",
publisher_infos = list(structure(list(dfpClicks = integer(0),
dfpImpressions = integer(0), dfpMatchedQueries = integer(0),
dfpMeasurableImpressions = integer(0), dfpQueries = integer(0),
dfpRevenueCpm = integer(0), dfpRevenueCpc = integer(0),
dfpViewableImpressions = integer(0), dfpPagesViewed = integer(0),
adsenseBackfillDfpClicks = integer(0), adsenseBackfillDfpImpressions = integer(0),
adsenseBackfillDfpMatchedQueries = integer(0), adsenseBackfillDfpMeasurableImpressions = integer(0),
adsenseBackfillDfpQueries = integer(0), adsenseBackfillDfpRevenueCpm = integer(0),
adsenseBackfillDfpRevenueCpc = integer(0), adsenseBackfillDfpViewableImpressions = integer(0),
adsenseBackfillDfpPagesViewed = integer(0), adxBackfillDfpClicks = integer(0),
adxBackfillDfpImpressions = integer(0), adxBackfillDfpMatchedQueries = integer(0),
adxBackfillDfpMeasurableImpressions = integer(0), adxBackfillDfpQueries = integer(0),
adxBackfillDfpRevenueCpm = integer(0), adxBackfillDfpRevenueCpc = integer(0),
adxBackfillDfpViewableImpressions = integer(0), adxBackfillDfpPagesViewed = integer(0),
adxClicks = integer(0), adxImpressions = integer(0),
adxMatchedQueries = integer(0), adxMeasurableImpressions = integer(0),
adxQueries = integer(0), adxRevenue = integer(0), adxViewableImpressions = integer(0),
adxPagesViewed = integer(0), adsViewed = integer(0),
adsUnitsViewed = integer(0), adsUnitsMatched = integer(0),
viewableAdsViewed = integer(0), measurableAdsViewed = integer(0),
adsPagesViewed = integer(0), adsClicked = integer(0),
adsRevenue = integer(0), dfpAdGroup = character(0), dfpAdUnits = character(0),
dfpNetworkId = character(0)), row.names = c(NA, 0L), class = c("tbl_df",
"tbl", "data.frame")))), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame")))), row.names = c(NA, -2L), class = c("tbl_df",
"tbl", "data.frame"))
Is this doable?