R语言学习过程各种笔记 22页

  • 153.01 KB
  • 2022-08-23 发布

R语言学习过程各种笔记

  • 22页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
数据挖掘与数据分析的主要区别是什么?数据分析就是为了处理原有计算方法、统计方法,着重点就是数据、算法、统计、数值。数据挖掘是从庞大的数据库中分析出有目标数据群,筛选出利于决策的有效信息简单来说就是数据分析是针对以往取得的成绩,比如说哪方面做得好,哪方面需要改进;数据挖掘就是通过以前的成绩预测未来的发展的趋势,并且为决策者提供建议。 读excel时可以先复制再运行data<-read.table("clipboard",header=T,sep='\t')在R语言中,使用“=”和“<-”到底有什么不同?就是等号和箭头号有什么区别,是完全一样还是局部不同?R里通常用符号”<-”代替其它语言里的”=”来作赋值符号。因为前者敲起来比等号要麻烦,且大部分情况下两者是等价的,所以通常就愉懒依旧用”=”来赋值。但要切记两者在某些时候是有区别的。字面上的解释,可以认为”<-”是赋值,”=”是传值。在函数调用中,func(x=1)与func(x<-1)是有区别的,前者调用完后变量x不会被保留,而后者会在工作区里保留变量x=1。再如length(x=seq(1,10))计算完成后x不会被保留,而length(x<-seq(1,10))计算完后你会在工作区里发现x这个变量。矩阵知识:1_矩阵的生成2_矩阵的四则运算3_矩阵的矩阵运算4_矩阵的分解1_1将向量定义成数组\n向量只有定义了维数向量(dim属性)后才能被看作是数组.比如:>z=1:12;>dim(z)=c(3,4);>z;[,1][,2][,3][,4][1,]14710[2,]25811[3,]36912注意:生成矩阵是按列排列的。1_2用array()函数构造多维数组用法为:array(data=NA,dim=length(data),dimnames=NULL)参数描述:data:是一个向量数据。dim:是数组各维的长度,缺省时为原向量的长度。dimname:是数组维的名字,缺省时为空。例子:>x=array(1:20,dim=c(4,5))>x[,1][,2][,3][,4][,5][1,]1591317[2,]26101418[3,]37111519[4,]481216201_3用matrix()函数构造矩阵函数matrix)是构造矩阵(二维数组)的函数,其构造形式为matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)其中data是一个向量数据,nro、是矩阵的行数,ncol是矩阵的列数.当byrow=TRUE时,生成矩阵的数据按行放置,缺省时相当于byrow=FALSE,数据按列放置.dimname。是数组维的名字,缺省时为空.如构造一个3x5阶的矩阵>A=matrix(1:15,nrow=3,byrow=TRUE)>A[,1][,2][,3][,4][,5][1,]12345[2,]678910[3,]11121314152_矩阵的四则运算可以对数组之间进行四则运算(+、一、*、/),这时进行的是数组对应元素的四则运算。一般情况下参加运算的矩阵或者数组的维数是相同的,但也可以计算不同维的,这是要将对应的元素补足。3_1转置运算对于矩阵A,函数t(A)表示矩阵A的转置,如:>A=matrix(1:6,nrow=2);>A;[,1][,2][,3]\n[1,]135[2,]246>t(A);[,1][,2][1,]12[2,]34[3,]563_2求方阵的行列式函数det()是求矩阵行列式的值,如>det(matrix(1:4,ncol=2));[1]-23_3向量的内积对于n维向量x,可以看成nxl阶矩阵或lxn阶矩阵。若x与y是相同维数的向量,则x%*%Y表示x与y作内积.例如,>x=1:5;Y=2*1:5>x%*%y[,1][1,]110函数crossprod()是内积运算函数(表示交叉乘积),crossprod(x,y)计算向量x与y的内积,即t(x)%*%y'。crossprod(x)表示x与x的内积.类似地,tcrossprod(x,y)表示’x%*%t(Y)’,即x与y的外积,也称为叉积。tcrossprod(x)表示x与x作外积.如:>x=1:5;y=2*1:5;>crossprod(x);[,1][1,]55>crossprod(x,y);[,1][1,]110>tcrossprod(x);[,1][,2][,3][,4][,5][1,]12345[2,]246810[3,]3691215[4,]48121620[5,]510152025>tcrossprod(x,y);[,1][,2][,3][,4][,5][1,]246810[2,]48121620[3,]612182430[4,]816243240\n[5,]10203040503_4向量的外积(叉积)设x和y是n维向量,则x%o%y表示x与y作外积.例如>x%o%y;[,1][,2][,3][,4][,5][1,]246810[2,]48121620[3,]612182430[4,]816243240[5,]1020304050outer()是更为强大的外积运算函数,outer(x,y)计算向量二与y的外积,它等价于x%o%y函数。outer()的一般调用格式为outer(x,y,fun=”*”)其中x,y矩阵(或向量),fun是作外积运算函数,缺省值为乘法运算。函数outer()在绘制三维曲面时非常有用,它可生成一个x和y的网格。3_5矩阵的乘法设A和B为两个矩阵,通常意义下的矩阵乘法是通过A%*%B来完成,crossprod(A,B)表示的是t(A)%*%B,而tcrossprod(A,B)表示的是A%*%t(B)。最后我们通过运算知道x%*%A%*%x为二次型。例子:>A=array(1:9,dim=(c(3,3)))>B=array(9:1,dim=(c(3,3)))>A%*%B;[,1][,2][,3][1,]905418[2,]1146924[3,]1388430>crossprod(A,B)==t(A)%*%B;[,1][,2][,3][1,]TRUETRUETRUE[2,]TRUETRUETRUE[3,]TRUETRUETRUE>tcrossprod(A,B)==A%*%t(B);[,1][,2][,3][1,]TRUETRUETRUE[2,]TRUETRUETRUE[3,]TRUETRUETRUE3_6生成对角阵和矩阵取对角运算函数diag()依赖于它的变量,当v是一个向量时,diag(v)表示以v的元素为对角线元素的对角阵.当M是一个矩阵时,则diag(M)表示的是取M对角线上的元素的向量.如\n>v=c(1,4,5);>diag(v);[,1][,2][,3][1,]100[2,]040[3,]005>M=array(1:9,dim=c(3,3));>diag(M);[1]1593_7解线性方程组和求矩阵的逆矩阵(矩阵逆和矩阵的广义逆、矩阵广义逆)若求解线性方程组Ax=b,其命令形式为solve(A,b),求矩阵A的逆,其命令形式为solve(A).设矩阵A=t(array(c(1:8,10),dim=c(3,3))),b<-c(1,1,1),则解方程组Ax=b的解x和求矩阵A的逆矩阵的命令如下:>A=t(array(c(1:8,10),dim=c(3,3)));>b=c(1,1,1);>x=solve(A,b);>x;[1]-1.000000e+001.000000e+003.806634e-16>solve(A);[,1][,2][,3][1,]-0.6666667-1.3333331[2,]-0.66666673.666667-2[3,]1.0000000-2.0000001矩阵的广义阵:ginv(A)3_8求矩阵的特征值与特征向量函数eigen(Sm)是求对称矩阵Sm的特征值与特征向量,其命令形式为:ev=eigen(Sm),则ev存放着对称矩阵Sm特征值和特征向量,是由列表形式给出的,其中ev$values是Sm的特征值构成的向量,ev$vectors是Sm的特征向量构成的矩阵.如>Sm=crossprod(A,A);>ev=eigen(Sm);>ev;$values[1]303.195336180.765907390.03875643$vectors[,1][,2][,3][1,]-0.46466750.8332863550.2995295[2,]-0.5537546-0.009499485-0.8326258[3,]-0.6909703-0.5527599940.46585024_1特征值分解(1).定义:\n对N阶方阵A,x为标量,v是非零的N维列向量,且满足Ax=xv,则称x为矩阵A的特征值,v是相对应于x的特征向量。特征值的全体成为A的谱。(2).在r中的实现:在r中利用函数eigen(A)来求矩阵的特征值和特征向量,具体的调用格式为:以矩阵A为例说明此问题>A=array(c(1,1,1,4,2,1,9,3,1),dim=c(3,3));>D=eigen(A);>D;$values[1]5.8284271-2.00000000.1715729$vectors[,1][,2][,3][1,]-0.8597736-9.486833e-010.5384820[2,]-0.43464986.474883e-17-0.7872938[3,]-0.26808393.162278e-010.3003425(3).特征值分解的性质:我们知道当所求的的特征向量构成的矩阵可逆时会满足solve(vectors)%*%A%*%vectors=diag(values),下面进行验证。>solve(vectors)%*%A%*%vectors;[,1][,2][,3][1,]5.828427e+008.339683e-16-1.285213e-15[2,]1.211325e-15-2.000000e+002.704000e-16[3,]-3.471971e-16-1.607126e-161.715729e-01结果的精度还是比较高的。4_2矩阵的奇异值分解函数svd(A)是对矩阵A作奇异值分解,即A=U%*%D%*%t(V),其中U,V是正交阵,D为对角阵,也就是矩阵A的奇异值.svd(A)的返回值也是列表,svd(A)$d表示矩阵A的奇异值,即矩阵D的对角线上的元素.svd(A)$u对应的是正交阵U,svd(A)$v对应的是正交阵V.例如,>A<-t(array(c(1:8,10),dim=c(3,3)))>SVD=svd(A);>SVD;$d[1]17.41250520.87516140.1968665$u[,1][,2][,3][1,]-0.20933730.964385140.1616762[2,]-0.50384850.03532145-0.8630696[3,]-0.8380421-0.262132990.4785099$v[,1][,2][,3][1,]-0.4646675-0.8332863550.2995295[2,]-0.55375460.009499485-0.8326258[3,]-0.69097030.5527599940.4658502>attach(SVD);\nThefollowingobject(s)aremaskedfrom'SVD(position3)':d,u,v>u%*%diag(d)%*%t(v);[,1][,2][,3][1,]123[2,]456[3,]7810>A;[,1][,2][,3][1,]123[2,]456[3,]78104_3qr分解设A为m*n矩阵,如果存在m*m酉矩阵Q(即Q(H)Q=QQ(H)=I)和m*n阶梯形矩阵R,使得A=QR,那么此分解称为QR分解。QR分解在解决最小二乘问题、特征值计算等方面有着十分重要的作用。#建立矩阵>A=(array(c(1:12),dim=c(4,3)));>A;[,1][,2][,3][1,]159[2,]2610[3,]3711[4,]4812#进行矩阵分解>QR=qr(A);QR$qr[,1][,2][,3][1,]-5.4772256-12.7801930-2.008316e+01[2,]0.3651484-3.2659863-6.531973e+00[3,]0.5477226-0.37816967.880925e-16[4,]0.7302967-0.91247449.277920e-01$rank[1]2$qraux[1]1.1825741.1561351.373098$pivot[1]123attr(,"class")[1]"qr"#提取Q,R并验证分解的正确性。>Q=qr.Q(QR);>R=qr.R(QR);>Q%*%R;\n[,1][,2][,3][1,]159[2,]2610[3,]3711[4,]4812矩阵的秩:4_4Schur分解引言:从特征值的分解中可以看出,特征值的分解是有条件的,如果特征向量不是线性无关的,那么对于一个矩阵来说便不能采用特征值分解的方法对矩阵进行分解。例如对于矩阵A=t(array(c(6,12,19,-9,-20,-33,4,9,15),dim=c(3,3))进行特征值分解有:>A=t(array(c(6,12,19,-9,-20,-33,4,9,15),dim=c(3,3)));>A;[,1][,2][,3][1,]61219[2,]-9-20-33[3,]4915>det(A);[1]-1>W=eigen(A);>W;$values[1]1+0i1-0i-1+0i$vectors[,1][,2][,3][1,]-0.4082483-0i-0.4082483+0i-0.4740998+0i[2,]0.8164966+0i0.8164966+0i0.8127426+0i[3,]-0.4082483+0i-0.4082483-0i-0.3386427+0i>attach(W);Thefollowingobject(s)aremaskedfrom'W(position3)':values,vectors>det(vectors);错误于determinant.matrix(x,logarithm=TRUE,...):目前还不能算复数矩阵的行列式>det(Re(vectors));[1]-7.599489e-19>solve(vectors)[,1][,2][,3][1,]0.000000+78209959i0.00000+78209959i-9.26965+78209959i[2,]0.000000-78209959i0.00000-78209959i-9.10153-78209959i[3,]3.691206+0i11.07362+0i18.45603+0i\n很明显vectors不是一个可逆矩阵此时进行特征值分辨这种方法便不可行,对于这种情况我们可以作Schur分解。描述:对于任意的方针A,其Schur分解的形式为:A=USU(H),其中U是标准的正交矩阵(即满足UU(H)=I),S为上三角矩阵,并且对角线上的元素为A的特征值。由于此函数在包Matrix中,所以使用之前必须调入。并且注意matrix和Matrix的区别。例子:>A=Matrix(c(6,12,19,-9,-20,-33,4,9,15),ncol=3,byrow=TRUE);>A;3x3Matrixofclass"dgeMatrix"[,1][,2][,3][1,]61219[2,]-9-20-33[3,]4915>library(Matrix);>Sch=Schur(A,vectors=TRUE);>Q=Sch@Q;>Q=as.matrix(Q)>attach(Sch);错误于attach(Sch):'attach'只适用于串列,数据框和环境>Q%*%T%*%t(Q)3x3Matrixofclass"dgeMatrix"[,1][,2][,3][1,]61219[2,]-9-20-33[3,]49154_5Cholesky分解(柯利分解)描述:正定矩阵:设A是n阶实系数矩阵,如果对任何非零向量X=(x1,...xn)都有t(X)AX>0,就称A正定(PositiveDefinite)。正定矩阵在相合变换下可化为标准型,即单位矩阵。Cholesky分解:对任意的正定矩阵A,存在上三角矩阵R,使A=t(R)%*%R,则称为A的Cholesky分解(柯利分解)。例子:>#输入矩阵>m=matrix(c(5,1,1,3),ncol=2);>m;\n[,1][,2][1,]51[2,]13>#矩阵分解>CH=chol(m);>#验证结果>t(CH)%*%CH;[,1][,2][1,]51[2,]13tapply()分类汇总By函数分类汇总,分类分析1、sapply(w,class):对每列求种类。2、#利用tapply实现类似于excel里的数据透视表的功能:>da   yearprovincesale1  2007        A    12  2007        B    23  2007        C    34  2007        D    45  2008        A    56  2008        C    67  2008        D    78  2009        B    89  2009        C    9102009        D   10>attach(da)>tapply(sale,list(year,province)) [1]  1  4  710  2  811  6  912>tapply(sale,list(year,province),mean)      A  BC  D2007  1  23  42008  5NA6  72009NA  8910by(warpbreaks[,1],warpbreaks[,-1],summary)by(warpbreaks,warpbreaks[,"tension"],\nfunction(x)lm(breaks~wool,data=x))3.library(dplyr)train_groupby_termlimit=group_by(order_train,term1,limit1)termlimit=summarise(train_groupby_termlimit,n=n())数据框单列数据排序,按某列排序,order.nos=order(iris[,4],decreasing=T)iris[order.nos,]sqldf包,用R写数据库语言。sqldf('select*fromiris3where"Sepal.Width">3')//用单引号(用双引号有时不行)详细介绍:http://code.google.com/p/sqldf清除变量rm(x),IQR函数IQR就是四分位差,是75%分位值和25%分位值的差保留小数位数options(digits=2)\n检验是否正态shapiro.test()ibrary("nortest");##nortest包里的函数都是检验是否正态的lillie.test()#Kolmogorov-Smirnov检验ad.test()#Anderson-Darling正态性检验cvm.test()#Cramer-vonMises正态性检验pearson.test()#Pearson卡方正态性检验sf.test()#Shapiro-Francia正态性检验Kruskal-WallisH检验(K-S检验不仅能够检验单个总体是否服从某一理论分布,还能够检验两总体分布是否存在显著差异。其原假设是:两组独立样本来自的两总体的分布无显著差异。)kruskal.test(x=M)白噪声检验Box.test()adfTest(logstockts1),pp.test(),作平稳性检验字符串相加,合并字符串,字符串相加,字符串分离,字符分离分割字符串,字符串拆分paste("gg",as.character(2),sep="")[1]"gg2"yyyyy="网站停留时间:3小时4分50秒">yyyyy<-strsplit(strsplit(yyyyy,split=":")[[1]][2],split="小时");yyyyy[[1]][1]"3""4分50秒"Formula编辑,函数编辑方法\nf=formula(y~x1+x2)as.formula(y_star~f[3])y_star~f[3]确定矩阵维数x<-1:10attr(x,"dim")<-c(2,5)根据公式将已有变量合成数据框根据公式将已有变量合成data.frame,根据formula将已有变量合成数据框>y[1]2.32.32.21.81.82.92.22.42.92.12.42.42.22.32.22.02.51.92.12.42.32.92.31.82.52.5[27]2.02.62.42.72.01.82.02.22.82.22.52.42.42.62.32.02.62.22.11.8>x1[1]48576670893646542677896747515766798860497752608643346372575559837647[35]368082643742668337685992>x2[1]50364041284942455229294338345336332933552944432347552532324233363140[35]533429304747432244453728>x3[1]51464844435450486250485355515449564649515258504153544946525142494748[35]574948516050535151515346a=data.frame(model.frame(y~x1+x2+x3))获取lm对象中包含的变量名提取lm函数公式里的变量的内容,提取formula的里面的变量all.vars(y~x1+x2+x3)\n[1]"y""x1""x2""x3"##将formula(公式)“y~x1+x2+x3”分解把字母变成小写字母Tolower()排列组合:Choose(n,k)##组合数factorial(n)##n的阶乘library(gtools)combinations(4,2)#把C4取2的情况列出来combn(4,2)#也是C4取2的情况列出来向量里面的数相乘,向量乘积,向量相乘prod(x)##算向量x里面所有数相乘的积adabag包的问题解决adabag包要求predict的newdata的数据中的因变量一定要有原来变量的各个水平(即使有的水平没有数值也没有关系)library(adabag)a=bagging(Species~.,iris)D=irislevels(D[,5])=rep(levels(iris[,5])[1],3)#所有的观测值都是setasa,但其他的因子都不存在summary(D)b=predict(a,newdata=D)$classtable(iris[,5],b)结果是\n但改在这样后就没问题了:new.D=irisnew.D[,5]=iris[1,’Species’]#这样所有的观测值都是setosa,但其他的因子还在(虽然没有观测值),结果是:predicted.object=predict(a,newdata=new.D)table(iris[,5],predicted.object$class)因此,下面的new.D和D在取值上都是一样的,但因子个数(无论有没有)却不一样。看一下levels(new.D)和levels(D)就清楚了。补缺失值:1、library(DMwR)##加载程序包library(nnet)head(algae)algae<-algae[-manyNAs(algae),]##去掉那些包含很多缺失值的观测clean.algae<-knnImputation(algae[,1:12],k=10)##使用与缺失值距离最近的十个观测值的平均值来填充缺失值2、Library(missForest)missRorest(w)弥补缺失值w[114:118,]#116有问题w[116,1]=NA#弥补缺失值library(missForest)v=missForest(w)$ximpv[114:118,]#116正常\n保存R里面的图片:将图片保存到当前啊作目录中名为mygraph.pdfpdf("mygraph1.pdf")##也可以是jpeg(),win.metafile(),png(),bmp(),tiff(),xfig()和postscript()plot(mtcars$wt,mtcars$mpg)abline(lm(mpg~wt,data=mtcars))title("RegressionofChapter1")dev.off()在指定的区间,求出函数的极大值点optimize(f,c(0,1),maximum=TRUE)(0,1)为定义区间求导函数,求导数fun=expression(x^2)##其中x^2是函数D(fun,"x")如何查看r软件已安装包有哪些?查看R里的包,查看已安装的包.packages(all.available=TRUE)"car"%in%.packages(all.available=TRUE)[1]TRUE\n一步一步运行函数;一步步运行函数;按步运行;逐步运行以glm为例:library(DAAG)head(anesthetic)#数据debug(glm)out=glm(move~conc+logconc,family=binomial(link=logit),data=anesthetic)然后就会一步一步显示结果。画散点图把直线和曲线加上,附有拟合直线和平滑曲线的散点图。第一种:attach(mtcars)plot(wt,mpg,main="BasicScatterPlotofMPGvs.Weight",xlab="CarWeight(lbs/1000)",ylab="MilesPerGallon",pch=19)abline(lm(mpg~wt),col="red",lwd=2,lty=1)lines(lowess(wt,mpg),col="blue",lwd=1,lty=2)第二种:library(car)scatterplot(mpg~wt|cyl,data=mtcars,lwd=2,main="ScatterPlotofMPG",xlab="WeightofCar",ylab="MilesPerGallon",legend.plot=T,id.method="identify",labels=row.names(mtcars),boxplots="xy")第三种:散点矩阵library(car)scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,spread=F,diagonal="histogram")\n对一个矩阵定义颜色,根据矩阵加颜色,根据矩阵里的数定义一个颜色矩阵mydata<-mtcars[c(1,3,5,6)]mydata.corr=abs(cor(mydata))mycolors=(dmat.color(mydata.corr))myorder=order.single(mydata.corr)#把数据中相似的对象更为靠近,把相关性较高的对象放一起散点图重叠程度,重叠散点图的表示n<-10000x1<-matrix(rnorm(n),ncol=2)x2<-matrix(rnorm(n,mean=3,sd=1.5),ncol=2)x<-rbind(x1,x2)oldpar<-par(mfrow=c(2,2))smoothScatter(x,nrpoints=0)smoothScatter(x)##adifferentcolorscheme:Lab.palette<-colorRampPalette(c("blue","orange","red"),space="Lab")smoothScatter(x,colramp=Lab.palette)积分,函数积分integrate{stats}integrate(dnorm,-1.96,1.96)integrate(dnorm,-Inf,Inf)f=function(x)x>integrate(f,0,2)2withabsoluteerror<2.2e-14\n分组画散点图,分组画图。画组合图查看x的属性。X的属性值。Attributes(x)三维矩阵,三维数组a=1:150p=array(a,dim=c(5,10,3))求一组数的累积分布函数图形,一组数的分布函数图1.dat=rnorm(10000)\nx=density(dat)$xdx=diff(density(dat)$x)[1]y=density(dat)$yplot(x,cumsum(y*dx))2.利用fitdistrplus包来拟合分布函数library(fitdistrplus)#生成x1正态随机数set.seed(123)x1<-rnorm(100)descdist(x1)##用这个函数,根据其结果和图形结合来看比较像什么分布;若像多个分布,就把多个都运行看看哪个更好。descdist(x1,boot=500)#跟上一句类似,但把每个点都在图中标出fitnb<-fitdist(x1,"norm")summary(fitnb)plot(fitnb)##上面三句结合,到这里会有图形把实际值与分布函数图放在一起比较,直观上看是否类似cdfcomp(fitnb)##这个是累积函图,观察其分布函数与实际的累积函数是否相似##上面(也可以把两个结果放在一起比较,fitp<-fitdist(x1,"unif");cdfcomp(list(fitp,fitnb)),这样可以看两个哪个拟合的更好)gofstat(fitnb)#会输三个统计量,就是衡量假设分布对实际数据拟合的好坏指标。具体指标怎么样,需查一下(应该是越小越好的)。##其他函数也可研究一下,我还没研究透##看下面的一个例子更清楚了。set.seed(123)x3<-rbeta(n=100,shape1=5,shape2=10)descdist(x3,boot=1000)fitb<-fitdist(x3,"beta")summary(fitb)plot(fitb)fitn<-fitdist(x3,"norm")summary(fitn)plot(fitn)cdfcomp(list(fitb,fitn))gofstat(list(fitb,fitn))#就各项指标来看,fitb更好一点\nCut,将数值型变量分段,划分变量区间,对变量进行划分,分成几份Z<-stats::rnorm(10000)table(cut(Z,breaks=-6:6))R语言读取文件夹下文件并进行合并数据生成总数据文件,读取文件夹下的所有文件在流水化办公中,通常有格式统一的表格文件产生,但是到最后要将这一堆表格文件整合为大表却很揪心,累断手,如何用R语言进行一次性导入整合呢?假设我们将D:/input文件夹作为需要导入的表格的存放点,文件夹内所有文件均为此次需要导入数据,那么可以用以下程序进行操作 setwd("D:/")                                                                    #设定工作目录为D盘 a=list.files("input")                                                       #list.files命令将input文件夹下所有文件名输入a dir=paste("./input/",a,sep="")                                      #用paste命令构建路径变量dirn=length(dir)                                                                 #读取dir长度,也就是文件夹下的文件个数 merge.data=read.csv(file=dir[1],header=T,sep=",")   \n#读入第一个文件内容(可以不用先读一个,但是为了简单,省去定义data.frame的时间,我选择先读入一个文件。 for(iin2:n){   new.data=read.csv(file=dir[i],header=T,sep=",")   merge.data=rbind(merge.data,new.data) }#循环从第二个文件开始读入所有文件,并组合到merge.data变量中write.csv(merge.data,file="./input/merge.csv",row.names=F)  #输出组合后的文件merge.csv到input文件夹

相关文档