# R 会话中创建的所有对象可以永久地保存在一个文件中以便于以后的 R 会话调
# 用。在每一次 R 会话结束的时候,你可以保存当前所有可用的对象。如果你想这样
# 做,这些对象将会写入当前目录下一个叫.RData 10 的文件中,并且所有在这次会话中
# 用过的命令行都会被保存在一个叫.Rhistory 的文件中。
# 如果采用 R 做分析,你最好用相对独立的工作目录
#向量和复制
# 赋值号<-的使用,也可以使用=, 函数assign()
x <- c(10.4,6.5,3.1,6.4,21.7) # c() 返回一个首尾相连的向量
# 等价于:
assign("y",c(10.4,6.5,3.1,6.4,21.7))
c(10.4,6.5,3.1,6.4,21.7) -> x
1/x #生成一个副本,不会直接修改原来x的值
y <- c(x,0,x) # 11个元素的值,copy赋值
# 向量运算,对逐个元素的运算
# 将产生一个新的长度为11的向量v。它由2*x 重复2.2次,y 重复一次,
# 1 重复11次得到的向量相加而成,因为c()生成的是首尾相连的向量,R 的特性
v = 2*x + y + 1
# values 相等
mean(x)
sum(x)/length(x)
var(x)
sum((x-mean(x))^2)/(length(x)-1) #一般使用n-1
sort(x) #默认升序排序
sort(x,decreasing=TRUE) #降序排列
# max, min, pmax, pmin
a1 <- c(1,7,2,4)
a2 <- c(5,6,3,8)
# 得到所有数的最值
max(a1,a2);min(a1,a2)
# 比较向量的每一个数给出要求的最值
pmax(a1,a2)
pmin(a1,a2)
# R 环境内部的计算是以双精度的实数或者
# 双精度的复数(在输入数据是复数的情况下)实现的。
# 处理复数的时候要明确给出复数部分(虚数部分i)
sqrt(-17+0i)
# 生成正则序列
1:5
# 1 2 3 4 5
5:1
# 5 4 3 2 1
2 * 1:5
# 2 4 6 8 10
# seq(from,to,by,length) 开始 结束 步长 个数
seq(1,5,0.5)
s2 <- seq(1,3,0.3)
s3 <- seq(4,3,-0.3)
# rep(x,times) 重复复制对象xtimes次
rep(3,4)
# ------- 逻辑向量 ----------
# FALSE TRUE
tmp <- x > 5
# == != & | !
# 相等 不等 与 或 非
# 缺失值 NA
z <- c(1:3,NA)
is.na(z) # 判断每一个值是不是缺失值
# 注意此处的不同
x = NA
x == NA # [out] NA
is.na(x) #[out] TRUE
# 数值计算会产生第二种“缺损”值,也称为非数值(Not a Number)NaN
0 / 0
Inf - Inf
# 对于NA 和NaN 用is.na(xx) 检验都是 TRUE。
# 为了区分它们,is.nan(xx)就只对是NaN 元素显示TRUE。
a <- c("a","b",NA)
is.na(a)
is.nan(a)
# --------字符向量和c语言风格相似--------
# 两种初始化的格式
s = "sasss"
s1 = c("saaa")
# 交替循环连接生成字符串
label1 <- paste(c("x","y"),1:10,sep="")
# [1] "x1" "y2" "x3" "y4" "x5" "y6" "x7" "y8" "x9" "y10"
label2 <- paste(c("x","y","z"),1:10,sep="")
# [1] "x1" "y2" "z3" "x4" "y5" "z6" "x7" "y8" "z9" "x10"
x = c(1:10,NA)
#逻辑向量
y <- x[!is.na(x)] #得到所有是TRUE的下表的值
#正整数向量
y <- x[1:10] # 1-10,R语言中下标从1开始
#负整数向量
y <- x[-(1:5)] # 将x 除开始五个元素外的其他元素都赋给y
# 6 7 8 9 10
#字符串向量,通过名字来取值,类似于字典类型
fruit <- c(5,10,2,1)
names(fruit) <- c("orange","banana","apple","peach")
lunch <- fruit[c("apple","orange")]
# 集体修改值,有没有一种numpy和pandas的感觉
a = c(1,NA,2,NA)
a[is.na(a)] <- 0
a[a > 0] <- -a[a > 0]
R的不同类型的对象
矩阵(matrix)
因子(factor) 为处理分类数据提供一种有效的方法
列表(list) 范化的向量
数据框(data frame) 类似有pandas中的DataFrame
函数(function) 保存在工作目录中的R的对象