刚刚写了一个处理文件数据的程序,用R语言写的,里面用到了一些对路径,对字符串的操作。
主要就是提取一个文件夹下的以txt结尾的文件名,然后对这个文件中的数据进行处理,处理成自己需要的,然后保存到另一个文件夹下。
代码如下(有注释):
<span style="font-size:18px;">#设置文件操作路径
setwd("G:/刘拴朋/MSRDailyActivity3D (MSR Daily Activity 3D dataset/")
#提取该路径下某个文件夹下的所有文件
#txtfiles <- NULL
for(i in 1:8)
{
i <- as.character(i)
name <- "MSRDailyAct3D_pack"
names<-paste(name,i,sep="")
filenames = list.files(names)#将文件夹下的所有文件放到filenames中
#创建process_i的文件夹
dir.create(paste("process_",i,sep=""))
for(filename in filenames)
{
if(grepl(".txt", filename))#判断后缀名中是否包含txt
{
dir = paste("./",names,"/",filename,sep="")#连接
#txtfiles <- c(txtfiles,filename)#多余了,提取出来就处理就行了
sa<-NULL#保存为1的数据
sb<-NULL#保存为0的数据
data<-read.table(dir,na.strings="NA",skip=2,fill=TRUE)
result<-na.omit(data) #去除有NA值的行
tempA<-which(result$V4==1)#将第四列中为1的行号保存到tempA中
tempB<-which(result$V4==0) #将第四列中为0的行号保存到tempB中
for(z in tempA)
{
a<-result[z,]
sa<-rbind(a,sa)#将为1的每一行的数据保存到sa中
}
for(z in tempB)
{
a<-result[z,]
sb<-rbind(a,sb)#将为0的每一行的数据保存到sb中
}
#将处理后的数据,保存到process_*文件夹内
file1 <- sub(pattern="skeleton", replacement="skeleton1", dir)
file1<- sub(pattern = "MSRDailyAct3D_pack",replacement="process_",file1)
file0 <- sub(pattern="skeleton", replacement="skeleton0", dir)
file0<- sub(pattern = "MSRDailyAct3D_pack",replacement="process_",file0)
write.table(sa,file1,row.names=FALSE,col.names = FALSE)
write.table(sb,file0,row.names=FALSE,col.names = FALSE)
}
}
}</span>
用到的参考的文章有:
http://developer.51cto.com/art/201305/393692.htm 字符串操作
http://blog.sina.com.cn/s/blog_46d621c00101l66x.html 文件夹操作