如何在R中正确解析Twitter JSON并转换为Data Frame?
解决Twitter JSON Lines转DataFrame的解析问题
问题根源
你的JSON文件是JSON Lines格式(每行一个独立的Tweet JSON对象),而非标准的JSON数组格式。fromJSON()默认会将整个文件当作单个JSON结构解析,因此会因缺少数组包裹和元素间逗号报错;手动添加首尾括号但未给每行对象间加逗号,依然不符合JSON数组规范,所以报错持续。
解决方案一:用fromJSON()直接读取JSON Lines
jsonlite包的fromJSON()支持lines=TRUE参数,专门用于处理每行一个JSON对象的格式,同时配合flatten=TRUE展开嵌套结构:
library(jsonlite) # 读取JSON Lines文件并直接转换为扁平化DataFrame tweets_df <- fromJSON( "/Users/malana/Downloads/tweets.20130201_055232.10000lines", lines = TRUE, flatten = TRUE )
解决方案二:用stream_in()处理并优化嵌套列
如果偏好流式读取(适合大文件),可以用stream_in(),配合flatten=TRUE展开嵌套,若仍有未解析的二级列,用tidyr的unnest_wider()手动展开:
library(jsonlite) library(tidyr) # 流式读取文件 conn <- file("/Users/malana/Downloads/tweets.20130201_055232.10000lines") tweets_df <- stream_in(conn, flatten = TRUE) close(conn) # 展开指定嵌套列(示例:展开user列,列名加前缀区分) tweets_df <- tweets_df %>% unnest_wider(user, names_sep = "_")
内容的提问来源于stack exchange,提问作者Malana
相关产品推荐
相关产品推荐

