1import_users = function(raw_data, conversion_func=json_to_users) { 2 return(import_obj(raw_data, conversion_func)) 3} 4 5import_statuses = function(raw_data, conversion_func=json_to_statuses) { 6 return(import_obj(raw_data, conversion_func)) 7} 8 9import_trends = function(raw_data, conversion_func=json_to_trends) { 10 return(import_obj(raw_data, conversion_func)) 11} 12 13import_obj = function(raw_data, conversion_func, ...) { 14 return(conversion_func(raw_data, ...)) 15} 16 17json_to_users = function(raw_data) { 18 return(sapply(raw_data, buildUser)) 19} 20 21json_to_statuses = function(raw_data) { 22 return(sapply(raw_data, buildStatus)) 23} 24 25json_to_trends = function(raw_data) { 26 buildTrendLocationDf(raw_data) 27} 28 29df_to_statuses = function(df) { 30 df_to_class(df, tweet_columns, buildStatus) 31} 32 33df_to_users = function(df) { 34 df_to_class(df, user_columns, buildUser) 35} 36 37df_to_class = function(df, columns, builder, colname_converter=camel_case_to_twitter_names) { 38 if (length(setdiff(colnames(df), columns)) > 0) { 39 stop("Malformed tweet data.frame, columns don't match") 40 } 41 42 out = vector(mode="list", length=nrow(df)) 43 colnames(df) = sapply(colnames(df), colname_converter) 44 for (row in seq_along(df[, 1])) { 45 out[[row]] = builder(as.list(df[row, ])) 46 } 47 48 out 49}