如何从R语言向量中提取含小数的数字
解决方法
首先定义原始向量:
vec <- c("c(`Kruskal-Wallis chi-squared` = 201.760850624131)", "c(df = 17)", "1.26686891197831e-33", "Kruskal-Wallis rank sum test", "delta_Z by criteria")
方法1:基础R实现
通过正则表达式提取数值并过滤无效元素:
# 提取每个元素中的数值部分,去除多余字符 extracted_vals <- gsub("^.*=\\s*|^c\\(|\\)$", "", vec) # 筛选出符合数值格式的元素(排除描述性文本) final_vec <- extracted_vals[grepl("^[0-9.e-]+$", extracted_vals)] # 查看结果 final_vec
运行后输出:
[1] "201.760850624131" "17" "1.26686891197831e-33"
方法2:stringr包简化操作
若已安装stringr包,可更简洁地提取数值:
library(stringr) # 直接提取每个元素中的数值字符串 extracted_vals <- str_extract(vec, "[0-9.e-]+") # 移除NA值(对应两个非数值的描述元素) final_vec <- na.omit(extracted_vals)
正则说明
^.*=\\s*:匹配从开头到等号及后续空格的所有字符,替换为空^c\\(|\\)$:匹配开头的c(和结尾的),替换为空[0-9.e-]+:匹配数字、小数点、科学计数法的e和负号组合,精准定位数值部分
内容的提问来源于stack exchange,提问作者Wilson Souza
相关产品推荐
相关产品推荐

