#第一部分
#先将当前文件夹下的所有以csv结尾的文件名读进来
filelist <- list.files(pattern=".*.csv")
#文件个数
m<-length(filelist)
#按照文件名逐个读入数据,得到数据列表
datalist <- lapply(filelist, function(x) read.csv(x,header=F,stringsAsFactors=F))
#第二部分
library(stringr)#没装的请先安装
cha1<-c("a1","b23","c4","d56","e","f4")#这是6个字符串,每个字符串里面都包含数字,考虑如何把数字提取出来
col1<-str_extract_all(cha1,"\\d")#得到字符串列表,每个元素对应每个字符串的数字,但是不是你想象的那样
#具体形式是这样的:如23,得到的是"2" "3",所以该怎样把它变成我们想要的数字23是个问题,解决方法如下:
i<-1
while(i<=length(col1)){
if(length(col1[[i]])==0) col1<-col1[-i] else i<-i+1#这一步是考虑把没有数字的字符串对应的列表元素删掉,比如说"e"
}
col11<-numeric(length(col1))
for(i in 1:length(col1)){
l1<-length(col1[[i]])
l11<-c()
for(j in 1:l1)
l11<-paste(l11,col1[[i]][j],sep="")#将列表的每个元素连接起来,比如"2" "3"就变成了字符串"23"
col11[i]<-as.numeric(l11)#再将链接好的字符串进行数值化
}
col11<-col11[!duplicated(col11)]#有的数字在处理之后,即将字母去掉之后会有所重复,这步是向量去重处理(不需要去重的请忽略哈)
#补充两个个函数:
#1.删除字符串中的特定字符
gsub(a,b,c):将字符串c中的a字符用b字符进行替换,例如:
gsub(" ","","Lin hai")#这样可以删除字符串中的空格
#2.读取excel数据时指定行和列进行读取
library(data.table)
data1 <- fread("数据.csv", skip=1, nrows=100, select=c(1:50),data.table=F,header=F) #读取前五十列,前一百行
#其中skip是起始行,nrows是终止行,select是所要读取的列号(也可以写成列名,如select=c("X1", "X2"),表示读取列名为X1,X2的变量)