You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI中无法使用eval/parse,如何用Base R将指定字符串转为列表向量?

用Base R替代eval/parse实现字符串转向量列表

给定目标字符串:

exm <- "c(1,2,3),c(4,5),c(7,8,9),c(10,11)"

需要将其转换为由2或3元素数值向量组成的列表,且不能使用eval/parse,可以通过以下纯Base R代码实现:

# 分割字符串,提取每个c(...)块
vec_chunks <- strsplit(exm, ",(?=c\\()", perl = TRUE)[[1]]

# 处理每个块,转换为数值向量并组成列表
res <- lapply(vec_chunks, function(chunk) {
  # 移除c(开头和)结尾
  num_str <- gsub("^c\\(|\\)$", "", chunk)
  # 分割数字字符串并转为数值向量
  as.numeric(strsplit(num_str, ",")[[1]])
})

代码说明:

  1. 分割字符串:使用strsplit结合Perl正则的正向预查,(?=c\\(),仅分割位于c(前的逗号,确保每个分割结果都是完整的c(...)格式字符串。
  2. 转换为数值向量:
    • 用gsub去掉每个字符串块的c(前缀和)后缀,得到纯数字逗号分隔的字符串。
    • 再用strsplit分割数字字符串,最后通过as.numeric转换为数值向量。
  3. 组成列表:lapply会自动将所有处理后的向量组合成目标列表,结果与原eval(parse(...))完全一致。

内容的提问来源于stack exchange,提问作者David Ricardo Menacho Vadillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:00:58