课程来源于中国大学慕课,《机器学习和人工智能》浙江大学 张朋。

部分1

The c() function can be used to create vectors of objects, c()函数用来创建新的对象
这里的c指的是create创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
X<-8+7
X
a <- c(1.8, 4.5) #数值
b <- c(1+2i, 2-6i) #复数
d <- c(23, 44) #整数
e <- vector("logical", length = 5) #逻辑性长度为5的空向量
ab <- c(TRUE,24) #数值 TRUE强制转换成数值1
cd <-c (2.5, "May") #这里的2.5转换成了字符型"2.5"
class(qt) #检查任何对象的类型用class()函数
bar <- 0:5
class(bar) #整数类型的对象
as.numeric(bar)
class(bar)
as.character(bar)
class(as.character(bar))

部分2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
my_list <- list(22,"ab",TRUE, 1+2i)
my_list
my_list[[3]] #用双括号调用第三个元素
my_list[3] #用单括号调用的是第三个列表

my_matrix <- matrix(1:6, nrow=3, ncol=2) #创建一个3行2列的矩阵
my_matrix #按列的顺序来填充数值
dim(my_matrix) #dimension输出对象my_matrix的维度属性
attributes(my_matrix)$dim #这个效果同上

#因为维度输出的是n行n列,所以,号空着表示全部行或列
my_matrix[,1] #提取第一列
my_matrix[,2] #提取第二列
my_matrix[1,] #提取第一行
my_matrix[2,] #提取第二行
my_matrix[3,] #提取第三行
x<-c(1,2,3,4,5,6)
y<-c(20,30,40,50,60,70)
cbind(x,y) #注意这里对象数值连接的顺序的从列开始逐行填充的

部分3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#矩阵在列表中只能存储相同的数据类型,而数据框的应用更广泛,可以存储不同类型的的值

df<-data.frame(name = c("jess","jane","paul","mark"), score = c(67, 56, 87, 91))
df
str(df) #看数据框里的内部结构
nrow(df) #多少行
ncol(df) #多少列
df[1:2,2] <- NA #
df[4,2] <- NA


NA:缺失数据
NaN:无意义的数,比如sqrt(-2), 0/0。
Inf:正无穷大
-Inf:负无穷大
NULL:不存在


is.na(df) #查看数据框中哪些元素存在缺失数据
table(is.na(df)) #返回逻辑值的列表,查看列表中缺失情况
df[!complete.cases(df),] #返回具有缺失值的所在行的数据框
mean(df$score,na.rm=T) #移除所有缺失值,只输出剩余score数据

部分4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

#初始化一个变量
N <- 10

#检查是否这个变量*5大于40,这里要住于if{}else{}的格式
if(N*5>40)
{
print("This is easy")
} else {
print("It's not easy")
}

#初始化一个向量
y<-c(99, 45, 34, 65, 76, 23)

#显示这个向量的前4个元素
for(i in 1:4) { print(y[i])}

Age <- 12
#检测是否年龄小于17
while(Age<17){
print(Age)
Age <- Age+1
}

#mean的名词意思是平均值,sd标准差(Standard Deviation) ,中文环境中又常称均方差

mean.and.sd <- function(x){
av <- mean(x) #mean()是R语言的基本函数
sdev <- sd(x) #sd()也是R语言的基本函数
c(mean=av, SD=sdev)
}
distance <- c(148, 182, 173, 166, 109, 141, 166)
mean.and.sd(distance)

#更一般的是返回一个结果列表方便直接调用
mean.and.sd <- function(x = rnorm(10)){ #rnormn产生n个服从正态分布随机数
av <- mean(x)
sdev <- sd(x)
return(list(mean=av,SD=sdev))
}
mean.and.sd()