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

如何从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:20:31