我试图找到小数点的位置(如果存在),即使小数点后的所有内容都是零。
这种类型的问题已经出现过很多次了,但我还没有看到任何可以解释实际格式的问题。
场景:将 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.csv
的 colClasses = "character"
选项将数字作为字符串读入 R。 (请参阅文档 here 和 here 。)如果您将它们读取为数字,然后将它们转换为字符串,则 123.000 将转换为“123”,并且您将丢失您正在查找的信息。
说明
当你执行时
string = as.character(c(123.000))
发生的情况是 123.000
被解释为数字文字并存储为数字 123
。当您使用 as.character
将数字转换为字符串时,您会得到 "123"
。如果您打印字符串
,您将看到这一点。因此,当您搜索字符串时,您当然不会看到小数点,因为它在转换中丢失了。
关于r - 即使小数点后的所有内容都是零,也能找到小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414387/