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]]) })
代码说明:
- 分割字符串:使用
strsplit结合Perl正则的正向预查,(?=c\\(),仅分割位于c(前的逗号,确保每个分割结果都是完整的c(...)格式字符串。 - 转换为数值向量:
- 用
gsub去掉每个字符串块的c(前缀和)后缀,得到纯数字逗号分隔的字符串。 - 再用
strsplit分割数字字符串,最后通过as.numeric转换为数值向量。
- 用
- 组成列表:
lapply会自动将所有处理后的向量组合成目标列表,结果与原eval(parse(...))完全一致。
内容的提问来源于stack exchange,提问作者David Ricardo Menacho Vadillo
相关产品推荐
相关产品推荐

