如何将API返回的Base64解码后的序列化文本转为R数据框?
嘿,这个问题我熟!你之所以用unserialize()报错,是因为你拿到的根本不是R的序列化对象——unserialize()是用来还原用R自带的serialize()生成的二进制序列化数据的,而你解码后得到的是分号分隔的带双引号的结构化文本,和序列化完全不是一回事儿~
不用把数据存到磁盘再读,直接在内存里就能转成数据框,给你几个简单的方法:
方法1:用基础包的read.table(最省心)
read.table有个text参数,可以直接传入字符串数据,我们只需要指定分隔符、引号规则和表头即可:
# 假设你解码后的字符串存在变量x里 df <- read.table( text = x, sep = ";", # 字段用分号分隔 quote = "\"", # 字段用双引号包裹 header = TRUE, # 第一行是列名 stringsAsFactors = FALSE # 避免自动转成因子(R新版本默认已关闭此行为) )
方法2:用read.csv2(更贴合你的数据格式)
read.csv2默认就是用分号做分隔符、双引号做引号符,代码更简洁:
df <- read.csv2(text = x, stringsAsFactors = FALSE)
方法3:用data.table的fread(大数据量更高效)
如果你的数据集很大,data.table的fread速度更快,用法也简单:
library(data.table) df <- fread(x, header = TRUE, sep = ";")
运行完上面任意一种方法,df就是你想要的带列名的数据框了,比如打印出来会是这样:
lfdn pseudonym external_lfdn tester 1 50 434444345 0 0 2 91 454444748 0 0 3 111 444444141 0 0
内容的提问来源于stack exchange,提问作者habana
相关产品推荐
相关产品推荐

