See the differences with these examples
> grepl("\\.", "Hello.")
[1] TRUE
> grepl("\\.", "Hello")
[1] FALSE
the .
means anything as pointed out by SimonO101, if you want to look for an explicit .
then you have to skip it by using \\.
which means look for a .
R documentation is extensive on regular expressions, you can also take a look at this link to understand the use of the dot.