x<-c() #alt+-快捷生成
x=1:10
x=c(1:10)
##seq函数:生成等差数列
seq(from=1,to=100,by=2) #d=2
seq(from=1,to=100,length.out=10) # 输出个数为10
##rep函数:重复数列
rep(a,b) #重复b次a
a=2
length(x) #向量中有多少个元素
x[1] #访问向量第一个值
x[-19] #不输出第19个元素
x[c(4:18)] #输出x中第4-18个元素
x[c(1,2,3,4,5)] #输出x中第1,2,3,4,5个元素
y <- c(1:10)
y[c(T,F,T,F,T,F,T,F,T,F)]
1 3 5 7 9 #只输出TRUE值
y[c(T)] #循环使用TRUE逻辑,输出所有值
y[c(F)] #循环使用FALSE逻辑,整个向量值均为FALSE
y[c(T,F)] #循环使用TRUE,FALSE逻辑,按顺序进行判断
#如果T,F数量多于向量值的数量,会输出NA缺失值
y[y>5 & y<9]
6 7 8
------------------------------------------------------------------------------------------
z <- c("one","two","three")
"one" %in% z #%in%为判断符号
TRUE
z["one" %in% z] #z[TRUE]
"one","two","three"
z %in% c("one","two") #z向量中是否有"one","two"值
TRUE TRUE FALSE
z[z %in% c("one","two")] #z[TRUE,TRUE,FALSE]
"one","two"
k <- z %in% c("one","two") #k <- c(TRUE,TRUE,FALSE)
z[k] #z[TRUE,TRUE,FALSE]
"one","two"
y <- c(1,2,3,4,5)
name(y) <- c("one","two","three","four","five")
y
one two three four five
1 2 3 4 5
y["one"] #赋值用(),查询用[]
1
# 添加数据
1.直接添加
x<-c(1:100)
x[101]<-101
2.批量添加
v<-1:3
v
1 2 3
v[c(4,5,6)]<-c(4,5,6)
v
1 2 3 4 5 6
3.中间出现空值
v[8]<-4
v
1 2 3 4 5 6 NA 4
4.在中间插入数据
appended(x=v,values=99,after=5)
1 2 3 4 5 99 6 NA 4
# 删除数据
1.删除整个向量
rm(v)
2.删除某个元素(正负整数索引)
y<-c(1:5)
y
1 2 3 4 5
y[-c(1:3)]
y
4 5
# 修改数据-直接定位赋值
x[1]<-5
1.直接用数学符号计算
2.向量之间计算
#元素个数相等
** #幂次方
%% #求余计算
%/% #整除运算
#元素个数不相等,短的向量会被重复使用
#判断相等:== 一个=是赋值
3.逻辑计算
%in% #包含运算符
> #大于
< #小于
4.计算函数
abs() #绝对值
sqrt() #平方根
log(16,base=2) #log计算,base为底数 不加base默认自然对数
exp() #计算每个值的指数
ceilling() #不小于x的最小整数
floor() #不大于x的最大整数
trunc() #返回整数部分
round(x,digits) #四舍五入 (向量,保留位数)
sinif(x,digits) #保留小数部分有效数字
三角函数()
4.统计函数
sum() #求和
max() #最大值
min() #最小值
range() #最大值 最小值
mean() #平均值
var() #方差
sd() #标准差
prod() #连乘的积
median() #计算中位数
quantile(向量,c(0.4,0.5,0.8)) #分位数
which() #查询元素索引值
# 创建矩阵
1.赋值函数matrix(元素数量必须符合分配规则)
matrix(1:20,4,5)
matrix(1:20,4,byrow=T) #按行分布
matrix(1:20,4,byrow=F) #按列分布
2.dim函数
dim(x)=c(4,5)
# 绘图
heatmap.()
# 定义矩阵行、列的名字
rownames=c("R1","R2","R3")
cnames
dimnames(m)=list(rownames,cnames)
#创建数组
dim(x)=c(2,2,5)
# 矩阵下标访问
m[1,2]
#直接计算(矩阵之间行和列数要一致)
m+1
m+m
#内置函数
colsums() #每一列的和
rowsums() #每一行的和
colmeans() #取均值
rowmeans()
n*t #内积
n%*%t #外积
diag() #对角线的值
t(m) #行和列互换
a=1:20
b=matrix(1:20,4)
c=mtcars
d="this is a test list"
mlist=list(a,b,c,d)
mlist[1]
mlist[c(1,4)] #访问多个元素使用向量
mlist$ #名称访问$
mlist[[5]]=iris
#负值删除,或=NULL
mlist[[5]]=NULL
state=data.frame(state.name,state.abb,state.x77)
1.数值索引
2.$名称访问
3.attach()
4.with()
用factor()函数把字符型向量转换成因子
x <- c("男", "女", "男", "男", "女")
sex <- factor(x)
sex
## [1] 男 女 男 男 女
## Levels: 男 女
attributes(sex)
## $levels
## [1] "男" "女"
##
## $class
## [1] "factor"
as.numeric(sex) #把因子转换为纯粹的整数值
## [1] 1 2 1 1 2
as.character() #把因子转换成原来的字符型
## [1] "男" "女" "男" "男" "女"
# factor()格式
factor(x, levels = sort(unique(x), na.last = TRUE),
labels, exclude = NA, ordered = FALSE)
#levels:自行指定各水平值, 不指定时由x的不同值来求得
#labels:指定各水平的标签, 不指定时用各水平值的对应字符串
#exclude:指定要转换为缺失值(NA)的元素值集合
#ordered:取真值时表示因子水平是有次序的(按编码次序)
cut(1:10, breaks=c(0, 5, 10))
## [1] (0,5] (0,5] (0,5] (0,5] (0,5] (5,10] (5,10] (5,10] (5,10] (5,10]
## Levels: (0,5] (5,10]
set.seed(1)
x <- sort(round(rnorm(20), 2))
f <- cut(x, breaks=4); f
## [1] (-2.21,-1.26] (-1.26,-0.305] (-1.26,-0.305] (-1.26,-0.305] (-1.26,-0.305]
## [6] (-1.26,-0.305] (-0.305,0.647] (-0.305,0.647] (-0.305,0.647] (-0.305,0.647]
## [11] (-0.305,0.647] (-0.305,0.647] (-0.305,0.647] (-0.305,0.647] (0.647,1.6]
## [16] (0.647,1.6] (0.647,1.6] (0.647,1.6] (0.647,1.6] (0.647,1.6]
## Levels: (-2.21,-1.26] (-1.26,-0.305] (-0.305,0.647] (0.647,1.6]
levels(f) <- c("a", "b", "c", "d"); f
## [1] a b b b b b c c c c c c c c d d d d d d
## Levels: a b c d
cu <- quantile(x, c(0, 1/4, 1/2, 3/4, 1))
cu[1] <- cu[1] - 0.01*(cu[5] - cu[1])
f2 <- cut(x, breaks=cu, oredered_result=TRUE) #oredered_result=TRUE表示生成有序因子
levels(f2) <- c("a", "b", "c", "d"); f2
## [1] a a a a a b b b b b c c c c c d d d d d
## Levels: a b c d
table(sex)
## sex
## 男 女
## 3 2
可以按照因子分组然后每组计算另一变量的概括统计
h <- c(165, 170, 168, 172, 159)
tapply(h, sex, mean)
## 男 女
## 168.3333 164.5000
第一自变量h与与第二自变量sex是等长的, 对应元素分别为同一人的身高和性别, tapply()函数分男女两组计算了身高平均值
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。