-
lapply(x,runif)
//对数据进行随机抽取
常与匿名函数结合使用
lapply(x,function(m) m[1,])
//讲x依次传入function中,并抽取第一行
sapply(x,mean)//简化结果,当列表元素长度均为1,返回向量;列表元素长度相同且大于1,返回矩阵
查看全部 -
向量的每一个元素都是可以有名称
声明 x1向量 : x1<c(1,2,3,4)
给向量的每一个元素命名:
names(x1) <-c("a","b","c","d")
查看全部 -
数据框子集
> x <- data.frame(v1=1:5, v2=6:10, v3=11:15) > x v1 v2 v3 1 1 6 11 2 2 7 12 3 3 8 13 4 4 9 14 5 5 10 15 > x$v3[c(2,4)] <-NA #把v3列第2行和第4行元素设置成缺失值 > x v1 v2 v3 1 1 6 11 2 2 7 NA 3 3 8 13 4 4 9 NA 5 5 10 15 > x[,2] #按列号提取元素 [1] 6 7 8 9 10 > x[,"v2"] #按名称提取元素 [1] 6 7 8 9 10 > x[(x$v1<4 & x$v2>=8),] #提取满足第1列小于4,第2列大于等于8的所有行的元素 v1 v2 v3 3 3 8 13 > x[x$v1>2,] v1 v2 v3 3 3 8 13 4 4 9 NA 5 5 10 15 > x[which(x$v1>2),] v1 v2 v3 3 3 8 13 4 4 9 NA 5 5 10 15 > which(x$v1>2) [1] 3 4 5 > x$v1>2 [1] FALSE FALSE TRUE TRUE TRUE
which函数:Give the TRUE indices of a logical object, allowing for array indices.
> subset(x, x$v1>2) #构建子集 v1 v2 v3 3 3 8 13 4 4 9 NA 5 5 10 15
查看全部 -
R数据结构
7.数据框(data frame):用于存储表格数据,可视为各元素长度相同的列表。每个元素代表一列数据,每个元素的长度代表行数,元素类型可以不同。(数学理解:相当于几个列向量构成的向量组)
创建数据框:df <- data.frame(id = c(1,2,3,4), name=c("a","b","c","d"), gender=c(TRUE, TRUE, FALSE, FALSE)) #每个参数定义一个字段
查看数据框行数与列数:nrow(df), ncol(df)
将数据框转换成矩阵:
> df2 <- data.frame(id=c(1,2,3,4), score=c(80,86,90,100)) > df2 id score 1 1 80 2 2 86 3 3 90 4 4 100 > data.matrix(df2) id score [1,] 1 80 [2,] 2 86 [3,] 3 90 [4,] 4 100
查看全部 -
R数据结构
6.缺失值(missing value):NA/NaN,其中NaN属于NA。NaN表示数字的缺失值,NA可以表示数字缺失值、字符缺失值等
判断是否有缺失值:is.na()/is.nan()
> x <- c(1, NaN, 2, NA, 3) > is.na(x) [1] FALSE TRUE FALSE TRUE FALSE > is.nan(x) [1] FALSE TRUE FALSE FALSE FALSE
查看全部 -
> x<-factor(c("female","female","male","male","female"))
> x
[1] female female male male female
Levels: female male
> y<-factor(c("female","female","male","male","female"),levels = c("male","female"))
> y
[1] female female male male female
Levels: male female
> table(x)
x
female male
3 2
> unclass(x)
[1] 1 1 2 2 1
attr(,"levels")
[1] "female" "male"
查看全部 -
R + Python + SQL + Excel
查看全部 -
#tapply函数的应用 #对向量的子集进行操作 x<-c(rnorm(5),runif(5),rnorm(5,1))#第三个为均值为1,方差为0的正态分布 f<-gl(3,5)# tapply(x,f,mean) tapply(x,f,mean,simplify=FALSE) #存在许多不懂得东西
查看全部 -
#Mapply
#lapply的多元版本 #mapply(函数/函数名,数据,函数相关的参数) list(rep(1,4),rep(2,3),rep(3,2),rep(4,1)) mapply(rep,1:4,4:1) s<-function(n,mean,std){rnorm(n,mean,std)}#写出自己的函数 s#运行上述定义的函数,必要 s(4,0,1)#使用具体数字 mapply(s, 1:5,5:1,2)#对应关系为后三个元素依次与s()中的三个元素一一对应
查看全部 -
#apply的使用
#apply,沿着数组的某一个维度处理数据 x<-matrix(1:16,4,4) apply(x,2,mean)#求列的平均 apply(x,2,sum)#求列的和 rowSums(x)#同样可以求行的和 rowMeans(x) colSums(x) colMeans(x) x<-matrix(rnorm(100),10,10) apply(x,1,quantile,probs=c(0.25,0.75))#quantile求数据的百分位点 x<-array(rnorm(2*3*4),c(2,3,4)) apply(x,c(1,2),mean)#以第1及第2维为基础,沿第3方向压成平面 apply(x,c(1,3),mean) apply(x,c(2,3),mean)
查看全部 -
#lapply的应用 x<-list(a=1:10,b=c(11,21,31,41,51)) lapply(x,mean)#将返回一个列表,内容为列表x中单个元素的平均值(函数起到循环作用) x<-1:4 lapply(x,runif)#从均匀分布的总体中抽取若干个数出来 lapply(x,runif,min=0,max=100)#runif的默认区间为0-1;设定了min和max,更改了runif的区间为1-100 x<-list(a=matrix(1:6,2,3),b=matrix(4:7,2,2)) lapply(x,function(m)m[1,])#取出矩阵x中两个元素中第一行的元素 #sapply x<-list(a=1:10,b=c(11,21,31,41,51)) lapply(x,mean) sapply(x,mean)#简化lapply的数据,也起循环的作用 class(lapply(x,mean))#返回列表 class(sapply(x,mean))#返回数值 #sapply:简化结果 结果列表元素长度均为1,返回向量; 长度相同且大于1,返回矩阵。
查看全部 -
#向量化操作
#可作用于矩阵及向量 x<-1:5 y<-6:10 x+y#两个向量对应元素相加 x*y#两个向量对应元素相乘 x/y#两个向量对应元素相除 x<-matrix(1:4,2,2) y<-matrix(rep(2,4),2,2)#rep()函数是值将第一个元素重复第二个元素次数,将2重复4次 x+y#矩阵对应元素相加 x*y#矩阵对应元素相乘 x/y#矩阵对应元素相除 #真正的矩阵乘法 x%*%y#矩阵相乘
查看全部 -
#取出列表中某一个元素
x<-list(id=1:4,heigh=170,gender="male") x[1] x["id"]#两个函数作用相同
#取出列表中某一个元素的内容
x<-list(id=1:4,heigh=170,gender="male") x[[1]] x[["id"]] x$id#三个函数作用相同
#同时取出列表中多个元素
x<-list(id=1:4,heigh=170,gender="male") x[c(1,3)]
#列表的不完全匹配
x<-list(a=list(2,3,4,5),b=c("Monday","Tuesday")) x x[[1]][[2]]#第1个元素中的第2个元素,嵌套的两个方括号 x[[2]] x[[1]][2] x[[c(1,3)]]#取出列表中第1个元素中的第3个元素 x[[c(2,2)]]#取出列表中第2个元素中的第2个元素 l<-list(asdfghj = 1:10) l$asdfghj l$a#与上一个命令得出相同结论,称之为列表的不完全匹配 l[["asdfghj"]]#取出名为asdfghj的元素,要打双引号 l[["a"]]#得出的结果为空 l[["a",exact=FALSE]]#第二个命令为关闭了精准匹配以进行不完全匹配 rm(x) x<-list(asdfghj = 1:10,b=c("a","s","d"),aaa=2:11) x$a#出现两个元素前部分相同时,R将不能识别 x[["a",exact=FALSE]]#出现两个元素前部分相同时,R将不能识别 x$aa#能识别了
查看全部 -
第二章小结
查看全部 -
矩阵matrix
向量+维度属性(整数向量:nrow,ncol)
x<-matrix(nrow:2,ncol:3)
在行数列数前添加矩阵内容
x<-matrix(1:6, nrow=2, ncol=3)
矩阵维度的属性:dim
dim(x) #可以查看当前矩阵x有多少行,多少列
矩阵属性:attributes
attributes(x)
运行之后得到dim
【1】3 2
#当前这个矩阵的属性是维度
第二种创建矩阵的办法:
y<-1:6,
dim(y)<c(2,3)
#运行之后,y成功便成一个矩阵
如何拼接两个矩阵
y2<-matrix(1:6,nrow=2, ncol=3)
rbind(y,y2) #按照行拼接 行数相加得到2+2行,3列矩阵
cbind(y,y2) #按照列拼接 列数相加得到2行,3+3列矩阵
数组 array ,维度可以大于2,矩阵只能等于2
x<-array(1:24, dim=c(4,6))
x1<-array(1:24, dim=c(2,3,4))
查看全部
举报