当我的程序能够读取外界的数据,并正确地处理并输出结果时,我才感到程序发挥了它专属的价值。而我的第一个能做到的程序,是在R上实现的。
(1)创建文件夹:
> dir.create('K:/Create_1');
> dir.create("K:/Create_1");
这条语句在K盘创建了一个名为 Create_1 的文件夹。引号中包含所要创建的文件夹的地址。
使用单引号与双引号均可。
(2)读取数据:
My_data_1 <- read.table(file="clipboard",header = TRUE)
针对剪贴板上数据的读取,使用read.table()
函数,header=TRUE 表示将数据的第一行识别为列的名称。
File_1 <- file.choose()
My_data_2 <- read.table(file = File_1,header = TRUE,sep = ",") #table 表示二维表格数据
通过file.choose()
函数,可以用鼠标选择文件,从而不用手动输入地址。sep=”,” 表示这是一个以逗号分隔的数据。
read.csv(file="路径名") #也可使用专门读取csv文件的函数
使用中发现:使用read.csv()
函数所读取的数据,默认是按照首行是列名称来读取的。也就是说首行的数据被读取为列的名称。 如果想将首行也作为数据读入,使用read.table()函数。
My_data_2=read.table(file = File_1,header = FALSE,sep = ',') #FLASE表示表格中没有列名的数据,因而不用读取列名
(3)二维数据的读取:
对于一个二维数组,访问某元素的方式是 Altr[x][y],表示第x行,第y列。
(4)从一个二维数组中取出多个数字(向量)
> Vector_a = My_data[c(1,2,3,4,5,6,7,8),1]
#My_data为一个二维数组,Vector_a取My_data的第一列的前8个元素
#要取多个元素,行或列其中有一必为向量
#更简便的两种方式
> Vector_a=My_data[seq(from=1,to=8,by=1),1]
#seq(form=1,to=8,by=1) 产生从1到8,等差2的等差数列。
> Vector_c=1:8 #也可以产生等效的数列
#若要选取某一列或某一行的全部元素,将行或列空出即可
Vector_d = My_data[x,y]
My_data[1,] #选取第一行的全部
有行或列名称时:
My_data[,'Fri'] #可以用列名或行名来代替
My_data$Fri #或在$符号后写上列名称
使用names()
或colnames()
函数科查看所设定的列名称,当然使用rownames()
可以查看行名称。
如果数据有行与列名称,则直接使用 My_data[‘行名称 ‘,‘列名称’ ] 来访问数据,更加直观方便。