我有这样一种字符向量:
"MODIS.evi.2013116.yL2.BOKU.tif"
矢量中间的数字会变的。evi
这个词有时会变成ndvi
。
我想使用substr
(或者其他函数,可能)在第二点之后对向量进行子字符串:.
,即接受2013116.yL2.BOKU.tif
,即使字符串是MODIS.evi.2013116.yL2.BOKU.tif
或MODIS.ndvi.2013116.yL2.BOKU.tif
。
发布于 2017-03-23 05:59:34
我们可以使用sub
来匹配一个或多个字符的两个实例,这些字符不是.
,后面跟着字符串的起始(^
)的.
,并将其替换为空(""
)。
sub("^([^.]+\\.){2}", "", str1)
#[1] "2013116.yL2.BOKU.tif" "2013116.yL2.BOKU.tif"
如果要保持的模式总是以数字开头,则可以将上面的模式简化为只匹配一个或多个非数字字符,并从字符串的开始(^
)开始用空白替换它。
sub("^\\D+", "", str1)
#[1] "2013116.yL2.BOKU.tif" "2013116.yL2.BOKU.tif"
数据
str1 <- c("MODIS.evi.2013116.yL2.BOKU.tif", "MODIS.ndvi.2013116.yL2.BOKU.tif")
发布于 2017-03-23 06:02:38
l = c("MODIS.evi.2013116.yL2.BOKU.tif","MODIS.ndvi.2013116.yL2.BOKU.tif")
sapply(l, function(x) strsplit(x, "vi.", fixed = T)[[1]][2])
发布于 2017-03-23 06:15:44
这将删除s
中的所有前导非数字字符:
sub("^\\D*", "", s)
如果s
和最后的注释一样,那么运行上面的结果是:
[1] "2013116.yL2.BOKU.tif" "2013116.yL2.BOKU.tif"
注:
s <- c("MODIS.evi.2013116.yL2.BOKU.tif", "MODIS.ndvi.2013116.yL2.BOKU.tif")
https://stackoverflow.com/questions/42978205
复制