基础语法部分,将从数据类型,逻辑语法,输入输出3部分进行讲解
1. 数据类型介绍
1.1 基础数据类型
基础类型是一切数据存储与计算的基础,是不可再拆分的元数据
R语言有如下5种基础数据类型
1. 数字 numeric eg:1、-2、0.7
2. 字符 character eg:”hello”
3. 逻辑型 logical eg:TRUE、FALSE
4. 日期时间型 data/datatime
5. 空值 NA
1.2 复杂数据类型
复杂数据类型是为了方便计算或者存储,将基础数据类型进行某种形式的组装,或者将组装结果进行二次组装的数据表现形式。
R语言有如下4种复杂数据类型,并依据这些数据类型定义了一系列用于计算的方法。
这里只简单介绍各种数据类型代表的含义和创建方式,具体的使用方法详见https://blog.csdn.net/qq_39422642/article/details/78905665,就不全量搬运了
1.2.1 向量
定义向量
:默认间隔为1
v1 = 1:4
v2 = 11:18
v3 = 1.8:3.8
v4 = 1.8:4.2
由v4可见,4.2没有达到4.8,也只会选择最近的那个
1.2.2 矩阵
如何创建矩阵
mat = matrix(1:16,nrow = 4,ncol = 4,byrow = TRUE)
#创建1:16的矩阵,行为4行,先按行排列
View(mat)
1.2.3 向量框
> data1 = state.x77 #通常会通过矩阵来构造,x77是R中的内置数据
> data2 = data.frame(data1) #创建数据框
> View(data2)
1.2.4 列表
列表可以使用向量,矩阵或者读取进来的数据来创建。
> list1 = list(vector = v1, matrix=mat,data = data2)
> View(list1)
2. 逻辑语法
几乎所有高级语言的基础逻辑语法都包含3种最基本的构成,分支、循环、函数(方法)调用
2.1 分支语句 (if … else…)
x = 2
if(x<2) {
print("Hello")
} else if(x<5) {
print("Hi")
} else {
print("Bye")
}
2.2 循环语句 (for 循环,while循环)
2.2.1 计算10以内所有偶数的和
sum = 0
for(i in 1:10) {
if(i%%2==0) {
sum = sum +i
print(sum)
}
}
输出:
[1] 2
[1] 6
[1] 12
[1] 20
[1] 30
2.2.2 计算30以内的所有正树的积,但积不许超过300
y=1
i=1
while (i<30) {
if(y*i>300) {
break
} else {
y = y*i
i=i+1
print(y)
}
}
输出:
[1] 1
[1] 2
[1] 6
[1] 24
[1] 120
2.3 函数(或方法)调用
定义函数
// 定义函数
calcu = function(x,dire) {
y = apply(x, dire, mean)
return(y)
}
// 函数调用
calcu(mat,1)
3. 数据输入输出
3.1 数据导入
第一:如果自己学习写代码,加载R语言中本身自带的数据包cars等,加载的方法跟其他包相同,具体代码如下:
> install.packages("car")
> library(cars)
第二:读取外部数据一般用read.***( ),***代表要读取的文件类型,下面详细解释了每种类型的文件的读取:
read.table(file, header = FALSE, sep = "", quote = ""'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
read.csv(file, header = TRUE, sep = ",", quote = """,
dec = ".", fill = TRUE, comment.char = "", ...)
read.csv2(file, header = TRUE, sep = ";", quote = """,
dec = ",", fill = TRUE, comment.char = "", ...)
read.delim(file, header = TRUE, sep = "t", quote = """,
dec = ".", fill = TRUE, comment.char = "", ...)
read.delim2(file, header = TRUE, sep = "t", quote = """,
dec = ",", fill = TRUE, comment.char = "", ...)
eg.
mydata <- read.table("123.txt",sep = ',')
> mydata
V1 V2 V3
1 1 2 3
2 4 5 6
3 7 8 9
> mydataD <- read.table("456.txt",sep = ',')
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : cannot open file '456.txt': No such file or directory
> mydataD <- read.table("D:456.txt",sep = ',')
> mydataD
V1 V2 V3
1 1 2 3
2 4 5 6
3 7 8 9
常见数据类型读取与导入:
- txt文件:mydata <- read.table( )
- Excel格式数据:mydata <- read.xlsx( ),在使用这个函数之前,需要先安装xlsx包,安装方法跟其他包的安装方法一致。一般来说,读取xlsx文件速度较慢,通常将Excel文件保存为csv格式,然后再进行读取 mydata <- read.csv( )
- XML数据:读取XML数据前先要载入XML包,然后使用 mydata <- xmlRoot(xmlTreeParse("***.xml"))来读取
3.2 数据导出
在完成数据的分析工作之后,现在我们要将数据导出了,我们还是介绍两种类型csv和txt。
导出CSV文件:
write.table (data, file ="C:UsersAdministratorDesktopresultCsv.csv", sep =",", row.names =FALSE)
运行以上代码,你的对应路径中就会产生一个名为resultCsv.csv的数据文件:
导出TXT文件:
write.table(data,file="C:UsersAdministratorDesktopresultTxt.txt" , sep =" ", row.names =FALSE,col.names =TRUE, quote =FALSE)
sep指定变量间分隔符,默认为空格,row.names指定是否输出行号,col.names指定是否输出列名,quote指定是否用引号将变量包括。
跑完代码之后,你对应的文件夹目录下就多对出一个名为newdata的TXT格式数据文件。
3.3 绘图
绘图介绍 https://www.jianshu.com/p/213088700ad9