如何控制"点"在R中的文件名?

时间:2014-02-11 10:52:53

标签: r

我想复制某个目录中的某些文件,而且由于堆栈溢出,我正在使用此功能。

    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

请提示

1 个答案:

答案 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"