You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

R语言中如何将数字列表格式字符串转换为数值列表?

高效转换JSON风格数字字符串为R数值向量

嘿,这个需求我太熟了!不用折腾strsplit配合一堆繁琐的处理步骤,有两个超简洁高效的方案直接搞定:

方案1:用jsonlite直接解析(最稳妥通用)

你的字符串本身就是标准的JSON数组格式,用jsonlite包的fromJSON()函数可以一步到位转换:

# 首次使用先安装包
install.packages("jsonlite")
library(jsonlite)

s <- "[14,7,5,3,4,0,1,7,2,3,1,18,13,4,23,7,8,8,11,18,15,6,2,10,2,4,8,5,11,5,1,5,2,4,3,1,6,8,5,5,3,1,1,4,5,2,9,3,4,11,11,14,3,12,2,6,0,0,15,1,18,5,3,6,6,6]"
num_vector <- fromJSON(s)

这个方法的好处是不管字符串里有没有空格、格式细节,只要是合法JSON数组都能正确解析,完全不用手动处理括号、逗号这些分隔符。

方案2:Base R原生方法(不用装包)

如果不想额外安装包,利用R的代码解析功能也能快速转换:

s <- "[14,7,5,3,4,0,1,7,2,3,1,18,13,4,23,7,8,8,11,18,15,6,2,10,2,4,8,5,11,5,1,5,2,4,3,1,6,8,5,5,3,1,1,4,5,2,9,3,4,11,11,14,3,12,2,6,0,0,15,1,18,5,3,6,6,6]"
num_vector <- eval(parse(text = s))

原理很简单:你的字符串格式和R里的数值向量写法完全一致,parse()会把字符串转换成R表达式,eval()执行这个表达式就得到了数值向量。不过要注意,这个方法只适合你能信任的字符串来源,如果是未知外部输入,eval(parse)有安全风险,谨慎使用。

验证一下结果:

# 查看类型
class(num_vector)
# 输出:"numeric"

# 查看前几个元素
head(num_vector)
# 输出:14  7  5  3  4  0

内容的提问来源于stack exchange,提问作者steves

火山引擎 最新活动