【问题标题】:How to extract numbers from text? [duplicate]如何从文本中提取数字? [复制]
【发布时间】:2016-11-22 14:28:22
【问题描述】:

我有流动的文本字符串:

string <- "['CBOE SHORT-TERM VIX FUTURE DEC 2016', 81.64],\n\n    ['CBOE SHORT-TERM VIX FUTURE JAN 2017', 18.36]"

有没有一种无需使用就可以从文本中提取数字元素的简单方法:

string_table <- strsplit(string, " ")

然后选择第 n 个元素并继续 strsplit 直到我有我需要的东西。

结果应该是:

result <- c(2016, 81, 64, 2017, 18, 36)

谢谢。

【问题讨论】:

    标签: r character strsplit


    【解决方案1】:

    我们可以通过将模式指定为一个或多个数字([0-9]+)来使用str_extract_all。输出将是一个长度为 1 的list,用[[ 提取向量并转换为numeric

    library(stringr)
    as.numeric(str_extract_all(string, "[0-9]+")[[1]])
    #[1] 2016   81   64 2017   18   36
    

    如果我们使用strsplit,用非数字字符分割

    as.numeric(strsplit(string, "\\D+")[[1]][-1])
    #[1] 2016   81   64 2017   18   36
    

    【讨论】:

    • 首先,您要搜索所有数字 0 到 9。请您解释一下 + 的用途。如果您可以解释那里的逻辑,那么“\\ D +”的相同问题会很棒。非常感谢您的快速回答。
    • @AlexBădoi \\D+ 指定一个或多个非数字字符
    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多