Squence of numbers
1:创造一连串数字最简单的方法是使用“ :”,
1:20
2:与“:”符号有类似功能的是seq()函数
(1)
(2)
表示从0~10,间隔为0.5的数。
(3)
表示从5~10长度为30的数。
(4)
找到一个和my_seq相同长度的向量。
(5)rep()函数表示复制向量和列表的元素
rep(x,times,length.out)
rep(x,each,length.out)
##
x表示你要进行复制的对象,可以是一个向量或者是一个因子。
times:代表的是复制的次数,只能为正数。负数以及NA值都会为错误值。复制是指的是对整个向量进行复制。
each:代表的是对向量中的每个元素进行复制的次数。
length.out:代表的是最终输出向量的长度。
Vector
向量有两种不同的表现形式:原子向量和列表。在原子向量中只能存在同一种数据类型,而在列表中可以存在多种不同的数据类型
接下来我们分析主要分析数值型,逻辑型和字符型。
数值型是最简单的类型,在这里就不做分析了。
逻辑型是我们最不容易理解的类型:逻辑型包含TRUE,FALES和NA,这些值产生于逻辑条件。
ex:>num_vect<-c(0.5,55,6,-10)
>tf<-num_vect<1
> tf
[1] TRUE FALSE TRUE FALSE
## The statement num_vect < 1 is a condition and tf tells us whether each corresponding element of our numeric vector num_vect satisfies this condition.
同时简单的逻辑符号有“>","<",">=","<=","==","!=".
ex2:((111 >= 111) | !(TRUE)) & ((4 + 1) == 5) TRUE
A|B形式中只要有任意一个是对的,则这个表达式为对。
A&B形式中只有两个均为正确,这个表达式才为正确。
注意:(1)在‘|’和‘&’同时存在时,‘&’优先
(2)||和&&符号均表示参数只与向量的第一个元素进行对比,而|和&则表示参数与向量的所有的元素进行对比。
ex:F&&T&&T输出结果为F;F||T||F输出结果为T
(3)identical()表示括号里的元素是否完全相同;xor()等同于|(或)。
注意整型1与数值1不是完全相同的
logical()创建一个逻辑向量
as.logical() 转换为逻辑值
is.logical()参变量是否是一个逻辑值。
接下来我们讨论字符型
ex:>my_char<-c("My","name","is")
> my_char
[1] "My" "name" "is"
>paste(my_char,collapse=" ") ##collapse=" "表示用空格号将向量中的各个字符值隔开。
[1] "My name is"
ex2:> paste("Hello","world!",sep=" ")
[1] "Hello world!"
> paste(1:3, c("X", "Y", "Z"), sep = "")
[1] "1X" "2Y" "3Z"
sep=“ ”表示用空格将两个向量中对应的字符值连接起来。
ex3:
> paste(LETTERS,1:4,sep="-")
[1] "A-1" "B-2" "C-3" "D-4" "E-1" "F-2" "G-3" "H-4" "I-1" "J-2" "K-3" "L-4" "M-1" "N-2" "O-3" "P-4" "Q-1" "R-2" "S-3" "T-4" "U-1" "V-2" "W-3" "X-4" "Y-1" "Z-2"
当两个向量中的字符数量不一致时,数量小的会进行循环。
补充:rnorm(x,mean=0,sd=1)###x为向量中元素的数量,默认均值为0,标准差为1.
sample(x,size,replace=FALSE,prob=NULL)##x代表总体,size表示样本量,replace表示取样是否应该更换,prob表示概率权重的向量,用于获取被采样向量的元素。
subsetting
我们通过在向量名字后的方括号中放置一个索引向量的方式从一个向量中挑选特定成分。
索引向量有四种不同的表达方式;逻辑向量,正整型向量,负整型向量,字符串向量
ex:逻辑向量
>y<x[!is.na(x)]
正整型向量
> x[c(3,5,7)]
[1] -2.225096 1.248436 NA
取第三,第五,第七个值
负整型向量
> x[c(-2,-10)]
取除了第二,第十个值之外的所有值,等同于
> x[-c(2,10)]
字符串向量
> vect<-c(foo=11,bar=2,norf=NA)
> vect
foo bar norf
11 2 NA
> names(vect)
[1] "foo" "bar" "norf"
> vect2<-c(11,2,NA)
> names(vect2)<-c("foo","bar","norf")
> identical(vect,vect2)
[1] TRUE
> vect["bar"]
bar
2
Matrices and Data Frames
1:如何将向量转变为矩阵
dim(my_vector)<-c(x,y) ##x,y为行列数
dim(my_vector)与attributes(my_vector)的功能一样,都是看矩阵的维度。
class(my_vector)##查看数据类型
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
dimnames = NULL)##矩阵函数
2:如何在矩阵中增加一行或一列
1:先写出要增加的一列数据
> patients<-c("Bill","Gina","Kelly","Sean")
2:将该列与矩阵结合
> cbind(patinets,my_matrix)
但要注意一点,就是在矩阵中只允许存在一种数据类型,所以我们需要将矩阵转化为数据框的形式
> my_data<-data.frame(patients,my_matrix)
3如何给数据框的列取名
1:先将每列的名字取好,形成一个向量
cnames<-c("patient","age","weight","bp","rating","test")
2:类似于dim()函数
> colnames(my_data)<-cnames