```r
#显示加载到内存中的变量和函数名称
ls()
#显示加载到内存中的变量和函数的详细信息
ls.str()
# 计算返回向量中最大、最小的元素的索引值
> x <- 1:100
> print(which.max(x))
[1] 100
> print(which.min(x))
[1] 1
#设置当前工作目录
> setwd("D:/rstudiodir") #必须是已经存在的目录
#获取当前工作目录
> getwd()
[1] "D:/rstudiodir"
#获取当前时间
> pt()
2016-01-08 19:06:49>
# 如果向量中存在多个相等的最大、最小值返回的是第一个最大、最小值的索引
> x <- c(1,2,5,2,1,5)
> print(which.max(x))
[1] 3
> print(which.min(x))
[1] 1
# 返回最大、最小值
> print(max(x))
[1] 5
> print(min(x))
[1] 1
# 对向量进行排序,默认采用升序排序方式
> x <- c(3,5,2,8,6,9,7,4)
> print(sort(x))
[1] 2 3 4 5 6 7 8 9
> print(sort(x,decreasing=T)) # 默认的降序参数设置为F,如果设置为T则采用降序排序
[1] 9 8 7 6 5 4 3 2
# 日期字符串向量
> szDate <- c("2014-1-1","2014-3-1","2014-3-18","2014-2-14","2014-4-26","2014-4-1","2014-1-24")
# 通过as.Date()函数生成日期序列
# 注意:R语言中很多函数都可以使用向量做参数
> t <- as.Date(szDate)
# sort()函数可以对日期序列做排序操作
> t <- sort(t);print(t)
[1] "2014-01-01" "2014-01-24" "2014-02-14" "2014-03-01" "2014-03-18" "2014-04-01"
[7] "2014-04-26"
# rev()函数对向量做逆序处理
> x <- c(3,5,2,8,6,9,7,4)
> print(x);print(rev(x))
[1] 3 5 2 8 6 9 7 4
[1] 4 7 9 6 8 2 5 3
> # 上例中的日期型数据同样可以逆序排列
> print(t);print(rev(t))
[1] "2014-01-01" "2014-01-24" "2014-02-14" "2014-03-01" "2014-03-18" "2014-04-01"
[7] "2014-04-26"
[1] "2014-04-26" "2014-04-01" "2014-03-18" "2014-03-01" "2014-02-14" "2014-01-24"
[7] "2014-01-01"
# 获取游程的信息
> x <- c(1,-1,1,1,1,-1,-1,1,1,1,1,1,1,1)
> y <- rle(x)
> print(mode(y))
[1] "list"
> str(y)
List of 2
$ lengths: int [1:5] 1 1 3 2 7
$ values : num [1:5] 1 -1 1 -1 1
- attr(*, "class")= chr "rle"
# 按照大小对向量数据做分类处理,可以用于绘制直方图
> x <- rnorm(n=10,mean=10,5) #产生10个均值为10,标准差为5的正态分布随机数
> print(x)
[1] 12.035945 11.746368 6.194775 13.411894 -2.747434 2.736881 9.476196 17.202233
[9] 14.509309 -2.196645
> breaks <- c(-20,-10,0,10,20) # 分割数据的边界数值向量
> y <- cut(x,breaks)
> print(summary(y))
(-20,-10] (-10,0] (0,10] (10,20]
0 2 3 5
# 在向量中查找指定数据(数据可用向量形式给出),此函数返回一个和原向量等长的向量
# 存在待匹配数据的位置上标记为N(第N个待匹配数据就标记N)
> x <- c(2,5,1,4,6,4,3)
> print(match(x,4))
[1] NA NA NA 1 NA 1 NA
> print(match(x,c(4,5)))
[1] NA 2 NA 1 NA 1 NA
# 计算组合数/排列数
> print(choose(5,2)) #组合数 c(5,2)
[1] 10
> print(factorial(3)) #排列数 3!
[1] 6
# 符号函数
# 每日股市上涨下跌收益率有正有负可以用sign()函数生成1,-1,0组成的游程序列
> cat("sign()函数运算结果:",sign(0),",",sign(3.14159),",",sign(-1024),sep="")
sign()函数运算结果:0,1,-1
# 删除向量、矩阵、数据框中的NA值
> x <- c(1,2,NA,4,5,NA,7,6,8,9)
> y <- na.omit(x);print(y);
[1] 1 2 4 5 7 6 8 9
attr(,"na.action")
[1] 3 6
attr(,"class")
[1] "omit"
> print(length(y));print(class(y))
[1] 8
[1] "numeric"
> dim(x) <- c(5,2)
> print(x)
[,1] [,2]
[1,] 1 NA
[2,] 2 7
[3,] NA 6
[4,] 4 8
[5,] 5 9
> print(na.omit(x)) # 删除数组中的NA值的规则是删除含有NA值的整行数据
[,1] [,2]
[1,] 2 7
[2,] 4 8
[3,] 5 9
attr(,"na.action")
[1] 3 1
attr(,"class")
[1] "omit"
# 交易品的历史数据中可能存在NA数值,使用na.omit()函数将会删除整条历史记录
# 检测向量、矩阵、数据框中是否包含NA数值,如果包含返回错误信息
> x <- c(1,2,NA,4,5,NA,7,6,8,9)
> y <- na.omit(x)
> na.fail(x)
Error in na.fail.default(x) : missing values in object
> na.fail(y)
[1] 1 2 4 5 7 6 8 9
attr(,"na.action")
[1] 3 6
attr(,"class")
[1] "omit"
> dim(x) <- c(2,5)
> na.fail(x)
Error in na.fail.default(x) : missing values in object
# 去除向量中的重复数据
> x <- c(1,2,NA,2,5,NA,4,3,4,9)
> print(unique(x))
[1] 1 2 NA 5 4 3 9
# subset()从数据框中取出满足条件的子集
# 对于历史行情数据、历史交易记录可以很方便的取出其中感兴趣的数据
> data(airquality) #加载空气质量的数据
> head(airquality)
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
> # 第一个参数:数据集
> # 第二个参数:逻辑变量 Temp>80并且month==5
> # 第三个参数:在新的子集选择那些列 从Ozone到Day的所有数据
> newset <- subset(airquality,Temp > 80 & Month == 5,select = c(Ozone:Day))
> head(newset)
Ozone Solar.R Wind Temp Month Day
29 45 252 14.9 81 5 29
```