r - 即使小数点后的所有内容都是零,也能找到小数点

标签 r regex

我试图找到小数点的位置(如果存在),即使小数点后的所有内容都是零。

这种类型的问题已经出现过很多次了,但我还没有看到任何可以解释实际格式的问题。

场景:将 Excel 电子表格读入 R。所有小数位数超过特定位数的数字都需要标记。我的向量有大约 1,000 个条目。

string = as.character(c(123, 0.123, 123.00000, 123.0, 123., 123.4567,  123.456789))
pattern = '\\.'
library(stringi)`

这不是我想要的

str_locate(string = string, pattern = pattern)[1:length(string), 1]
#[1] NA  2 NA NA NA  4  4

我要

#[1] NA 2 4 4 4 4 4

如果我将字符串更改为

string = c('123', '0.123', '123.00000', '123.0', '123.', '123.4567', '123.456789')

然后我得到了正确的答案

str_locate(string = string, pattern = pattern)[1:length(string), 1]
#[1] NA  2  4  4  4  4  4

最佳答案

您首先需要使用 read.csvcolClasses = "character" 选项将数字作为字符串读入 R。 (请参阅文档 herehere 。)如果您将它们读取为数字,然后将它们转换为字符串,则 123.000 将转换为“123”,并且您将丢失您正在查找的信息。

说明

当你执行时

string = as.character(c(123.000))

发生的情况是 123.000 被解释为数字文字并存储为数字 123。当您使用 as.character 将数字转换为字符串时,您会得到 "123"。如果您打印字符串,您将看到这一点。因此,当您搜索字符串时,您当然不会看到小数点,因为它在转换中丢失了。

关于r - 即使小数点后的所有内容都是零,也能找到小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414387/

相关文章:

r - 如何从 ggplot2 对象中提取图例标签?

asp.net - URL重写问题,正则表达式

java - 需要正则表达式帮助,因使用反斜杠而受到打击

regex - 如果字符串包含子字符串,为什么我的条件不满足?

c - gnu正则表达式中的非贪婪重复

r - 在没有任何现有模式逻辑的情况下聚合两个数据框列

regex - 用 gsub 在 R 中用 `\` + wild character 替换通配符

jquery - jquery中如何使用正则表达式获取@到@之间的数据

r - 使用 curve() 绘制 survreg 的生存和风险函数

r - 调整 R 中的 svm 参数(线性 SVM 内核)