我想复制某个目录中的某些文件,而且由于堆栈溢出,我正在使用此功能。
f <- list.files( path = "C:\\New folder (3)" , pattern = "*.envi" , full.names = TRUE )
n <- 5
lapply( seq_len( length(f) ) , function(x) { lapply( seq_len( n ) , function( x ,y ){
file.copy( f[x] , paste0( sub("^([^.]*).*", "\\1", f[x] ) , "-" , y , ".envi" ) )
} , x = x )
} )
这很好但我的问题是我的文件名字中有几个点。
示例 我的档案:
sm.0001.sgridand138.envi
代码生成
sm-1.envi
但我想考虑第二个点并且是
sm.0001-1.envi
请提示
答案 0 :(得分:2)
这个答案假定你想要从后面计算的第二个点开始切掉字符串的一部分。取代
sub("^([^.]*).*", "\\1", f[x] )
通过
sub("^(.*)\\.[^.]*\\.[^.]*$", "\\1", f[x] )
对于f[x] <- "this.is.a.test
,新表达式产生
> sub("^(.*)\\.[^.]*\\.[^.]*$", "\\1", "this.is.a.test")
[1] "this.is"