在R中,是否有比下面找到字符串中最后一个点的位置更好/更简单的方法?
x <- "hello.world.123.456"
g <- gregexpr(".", x, fixed=TRUE)
loc <- g[[1]]
loc[length(loc)]  # returns 16
这会找到字符串中的所有点,然后返回最后一个点,但它看起来相当笨拙.我尝试使用正则表达式,但没有走得太远.
我正在使用文本格式读取数据文件readLines.第一个"列"是我不需要的复杂文本.下一列包含我需要的数据.第一个"列"和数据用冒号(:)分隔.我希望在第一个冒号处拆分每一行并删除生成的文本字符串,仅保留数据.  
下面是一个示例数据文件.一个潜在的复杂因素是一行数据包含多个冒号.这条线可能在某些时候成为我的标题.所以,我可能不应该在每个结肠处分开,只是在第一个结肠处.
my.data <- "first string of text..:  aa : bb : cc 
            next string ........  :   2    0    2
            third string......1990:   7    6    5
            last string           :   4    2    3"
my.data2 <- readLines(textConnection(my.data))
my.data2
我试过这里提供的代码:
和这里:
上面第一个链接的代码似乎只在第一行的第一个冒号处分开.第二个链接的代码可能会做我想要的,但对我来说太复杂到目前为止无法成功修改它.
这是我希望获得的数据,此时我可以使用一个非常简单的gsub语句简单地用空格替换第一行中剩余的冒号:
   aa : bb : cc 
    2    0    2
    7    6    5
    4    2    3
很抱歉,如果这是我未找到的帖子的副本,感谢您提供任何建议或帮助.
我希望my.string用14个零替换前14个点region = 2.所有其他点应该保持原样.
df.1 = read.table(text = "
  city  county  state region                        my.string reg1 reg2
   1      1        1      1    123456789012345678901234567890   1    0
   1      2        1      1    ...................34567890098   1    0
   1      1        2      1    112233..............0099887766   1    0
   1      2        2      1    ..............2020202020202020   1    0
   1      1        1      2    ..............00..............   0    1
   1      2        1      2    ..............0987654321123456   0    1
   1      1        2      2    ..............9999988888777776   0    1
   1      2        2      2    ..................555555555555   0    1
", sep = "", header …