You can try
fread("cat file.dat | tr -s :", sep = ":")
fread()allows you to receive a system call in your first argument. This one uses tr -s, which is the compress command, replacing repetitions :with individual occurrences of this character.
With this call, it fread()can even recognize the argument sepautomatically, eliminating the need for its name.
, ( "x.txt" ):
writeLines("a::b::c", "x.txt")
read.table(text = system("cat x.txt | tr -s :", intern = TRUE), sep = ":")
, Windows.