R语言如何将CSV读取的列表格式字符串列转换为列表类型
CSV字符串列表列转R列表列的实现方法
你需要实现的和Python df.combined.apply(literal_eval) 对等的效果,可通过以下几种方式实现:
方法1:使用jsonlite包解析(推荐)
CSV中存储的方括号格式列表基本都符合JSON数组规范,用该方法兼容性最好,且无安全风险:
# 未安装包先执行安装 install.packages("jsonlite") # 加载包 library(jsonlite) # 核心转换逻辑,转换后combined列即为列表列 df$combined <- lapply(df$combined, function(x) jsonlite::parse_json(x))
如果需要将单元素列表自动转为向量,可添加simplifyVector = TRUE参数:
df$combined <- lapply(df$combined, function(x) jsonlite::parse_json(x, simplifyVector = TRUE))
方法2:eval(parse()) 方案(仅适用自己生成的可信数据源)
如果列表字符串符合R语法格式,可使用该方案,但要注意它会执行字符串内的所有代码,不可信数据源不要使用:
df$combined <- lapply(df$combined, function(x) eval(parse(text = x)))
提示:该方法的风险来自于如果字符串中包含恶意可执行代码,会直接在你的环境中运行,非可信场景优先选择方法1。
方法3:tidyverse 风格写法
如果你习惯使用dplyr + purrr的语法栈,可以用以下写法:
install.packages(c("dplyr", "purrr", "jsonlite")) library(dplyr) library(purrr) library(jsonlite) df <- df %>% mutate(combined = map(combined, ~parse_json(.x, simplifyVector = TRUE)))
内容的提问来源于stack exchange,提问作者Rahul Krishnan
相关产品推荐
相关产品推荐

