gpt4 book ai didi

R:如果字符串包含点,则 parse_number 失败

转载 作者:行者123 更新时间:2023-12-04 02:36:57 24 4
gpt4 key购买 nike

如果字符串包含 .,则 readr

parse_number 失败它适用于特殊字符。

library(readr)

#works
parse_number("%ç*%&23")

#does not work
parse_number("art. 23")

Warning: 1 parsing failure.
row col expected actual
1 -- a number .

[1] NA
attr(,"problems")
# A tibble: 1 x 4
row col expected actual
<int> <int> <chr> <chr>
1 1 NA a number .

为什么会这样?

更新:

预期结果为 23

最佳答案

点后有一个空格导致错误。这个序列的预期数字是多少(0.23 或 23)?

parse_number 似乎在寻找由您的语言环境定义的小数点和分组分隔符,请参阅此处的文档 https://www.rdocumentation.org/packages/readr/versions/1.3.1/topics/parse_number

您可以选择使用以下方式更改语言环境(grouping_mark 是一个带空格的点):

parse_number("art. 23",  locale=locale(grouping_mark=". ", decimal_mark=","))
Output: 23

或者去掉前面的空格:

parse_number(gsub(" ", "" , "art. 23")) 
Output: 0.23

编辑:要将点作为缩写和数字处理,请使用以下内容:

library(stringr)

> as.numeric(str_extract("art. 23", "\\d+\\.*\\d*"))
[1] 23
> as.numeric(str_extract("%ç*%&23", "\\d+\\.*\\d*"))
[1] 23

上面使用正则表达式来识别字符串中的数字模式。

  • \\d+ 求一个数字
  • \\.* 找到一个点
  • \\d* 找到剩余的数字

注意:我不是正则表达式方面的专家,但有很多其他资源可以让你成为正则表达式专家

关于R:如果字符串包含点,则 parse_number 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61328339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com