共计 6494 个字符,预计需要花费 17 分钟才能阅读完成。
1. 变量变换
as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.character(x),… 转换变量类型;使用如下命令可得到全部列表,methods(as)
factor():将一个向量转化为一个因子
2. 变量信息
is.na(x),is.null(x),is.array(x),is.data.frame(x),is.numeric(x),is.complex(x),is.character (x),… 检验变量的类型;使用如下命令得到全部列表,methods(is)
length(x):x 中元素的个数
dim(x): 查看变量的维数;重新设置的维数,例如 dim(x)=c(3,2)
dimnames(x): 重新设置对象的名称
nrow(x): 行的个数
ncol(x): 列的个数
class(x): 得到或设置 x 的类;class(x)<-c(3,2)
unclass(x): 删除 x 的类
attr(x,which): 得到或设置 x 的属性 which
attributes(obj): 得到或设置 obj 的属性列表
fix,edit: 对数据框数据进行表格形式的编辑
3. 数据选取和操作
which.max(x): 返回 x 中最大元素的指标
which.min(x): 返回 x 中最小元素的指标
rev(x): 翻转 x 中所有的元素
sort(x): 升序排列 x 中的元素;降序排列使用:rev(sort(x))
cut(x,breaks): 将 x 分割成为几段(或因子);breaks 为段数或分割点向量
match(x,y): 返回一个和 x 长度相同且和 y 中元素相等的向量不等则返回 NA
which(x==a): 如果比较操作为真(TRUE), 返回向量 x 的指针
choose(n,k): 组合数的计算
na.omit(x): 去除缺失值(NA)(去除相关行如果 x 为矩阵或数据框)
na.fail(x): 返回错误信息,如果 x 包含至少一个 NA
unique(x): 如果 x 为向量或数据框,返回唯一值
table(x): 返回一个由 x 不同值个数组成的表格(通常用于整数或因子),即频数表
subset(x,…): 根据条件(… 选取 x 中元素,如 x$V1<10); 如果 x 为数据框, 选项 select 使用负号给出保留 或去除的变量 subset(x, subset, select, drop = FALSE, …)
sample(x,size): 不放回的随即在向量 x 中抽取 size 个元素, 选项 replace=TRUE 允许放回抽取
prop.table(x,margin=): 根据 margin 使用分数表示表格,wumargin 时,所有元素和为 1
* R 数据的创建与索引
** 向量的操作
*** 向量的创建
**** c(…)
为 concatenate 的缩写;
常见的将一系列参数转化为向量的函数,通过 recursive=TRUE 降序排列列表并组合所有的元素为向量
*** from:to 产生一个序列
“:” 有较高的优先级;1:4+ 1 得到 ”2,3,4,5”
*** seq() 产生一个向量序列
seq(from = 1, to = 1, by = ((to – from)/(length.out – 1)),length.out = NULL, along.with = NULL, …)
其中 length.out 可简写为 len。
*** rep() 重复一个对象
rep(x,times):x 是要重复的对象(例如向量 c(1,2,3)),times 为对象中每个元素重复的次数(如 times=c(9,7,3)就是将 x 向量的 1 重复 9 次,2 重复 7 次,3 重复 3 次)。
除了上述主要的用法之外,还有一种特殊的用法:rep(x,times)重复 x times 次;使用 each= 来重复 x 元素 each 次;rep(c(1,2,3),2)得到 1 2 3 1 2 3;rep(c(1,2,3),each=2)得到 1 1 2 2 3 3。
*** 利用向量的索引实现定义分段函数
利用改变部分元素值的技术与逻辑值下标结合,可以定义向量的分段函数,例如,要定义
可以用如下的语句去实现:
> x = c(-2.3,4,-5,7);
> y = numeric(length(x));
> y[x<0] = 1 – x[x<0];
> y[x>0] = 1 – x[x>0];
> y
[1] 3.3 -3.0 6.0 -6.0
4.1. 数组(包含矩阵、向量)创建
c(…)
常见的将一系列参数转化为向量的函数,通过 recursive=TRUE 降序排列列表并组合所有的元素为向量
from:to 产生一个序列
“:” 有较高的优先级;1:4+ 1 得到 ”2,3,4,5”
seq() 产生一个向量序列
seq(from = 1, to = 1, by = ((to – from)/(length.out – 1)),length.out = NULL, along.with = NULL, …)
其中 length.out 可简写为 len。
rep() 重复一个对象
rep(x,times):x 是要重复的对象(例如向量 c(1,2,3)),times 为对象中每个元素重复的次数(如 times=c(9,7,3)就是将 x 向量的 1 重复 9 次,2 重复 7 次,3 重复 3 次)。
除了上述主要的用法之外,还有一种特殊的用法:rep(x,times)重复 x times 次;使用 each= 来重复 x 元素 each 次;rep(c(1,2,3),2)得到 1 2 3 1 2 3;rep(c(1,2,3),each=2)得到 1 1 2 2 3 3。
matrix(…)
创立矩阵 matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
array(x,dim=…)
产生由 x 组成的数组;使用类似 dim=c(3,4,2)指定维数;如果 x 长度不够,则 x 自动循环
data.frame(…)
创建数据框,变量可能被命名或未被命名
data.frame(v=1:4,ch=c(“a”,”b”,”c”,”d”),n=10);
相对短的向量会被填充到最大向量长度。
注意数据框中各个属性的元素个数必须相同
list(…)
创建一个由变量组成的列表,变量可能被命名;
list(a=c(1,2),b=”hi”,c=3i)
factor(x,levels=) 把向量 x 编码称为因子
factor(x = character(), levels, labels = levels,exclude = NA, ordered = is.ordered(x))
gl() 产生因子变量
gl(n,k,lenth=n*k,labels=)
通过指定水平方式产生水平因子;k 为水平的个数,n 为重复的次数
rbind() cbind()
rbind(…)以行的形式组合矩阵,数据框,或其它
cbind(…)以列的方式组合,其他同 rbind()
数据切割和分离
向量指标
x[n]: 第 n 个元素
x[-n]: 除了第 n 个元素的 x
x[1:n]: 前 n 个元素
x[-(1:n)]: 第 n + 1 至最后的元素
x[c(1,4,2)]: 指定元素
x[“name”]: 名为 ”name” 的元素
x[x>3]: 所有大于 3 的元素
x[x>3 & x<5]: 区间 (3,5) 的元素
x[x%in%c(“a”,”and”,”the”)]: 给定组中的元素
列表指标
x[n]: 列表显示元素 n
x[n]: 列表的第 n 个元素
x[”name”]: 名为 ”name” 的元素
x$name : 同上
矩阵指标
x[i,j]: 下表为 (i,j) 的元素
x[i,]: 第 i 行
x[,j]: 第 j 列
x[,c(1,3)]: 第 1 和 3 列
x[“name”,]: 名为 ”name” 的行
x$name : 同上
数据框指标
x[”name”]: 列明为 ”name” 的列
x$name : 同上
4.2.R 数学函数
4.2.1. 泛用函数 apply:
描述:让不同的函数作用数组 array 不同的边。
用法:apply(X, MARGIN, FUN, …)
参数描述:
X 为一数组 array,当然包括矩阵。
MARGIN:为一向量,它指定函数要作用的下标。例如对一个矩阵来说,1 代表行,2 代表列,而 c(1,2)代表行和列。
FUN 作用于数组 array 上的函数。此函数可以是自己编写的。
注意:
当 X 时一个 data.frame 时,而不是 array 时,函数 apply 就会强制性的通过 as.matrix 或 as.array 将其转化为 maxtrix 或 array。
例子:
## Compute row and column sums for a matrix:
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
col.sums <- apply(x, 2, sum)
row.sums <- apply(x, 1, sum)
4.2.2. 基本符号:
+ : 加
– : 减
* : 乘
/ : 除
^ : 幂
4.2.3. 三角函数与其他基本数学函数
sin,
cos,
tan,
asin,
atan,
atan2,
log,
log10,
exp,
max(x):
当 x 为一向量时,返回 x 中最大的元素。
当 x 为矩阵时,返回矩阵中所有元素的最大值。当要返回矩阵 x 每行或每列的最大值时,可以使用 apply 函数(apply(X, MARGIN, FUN, …)),其中 MARGIN 表示要作用的方式,1 代表行,2 代表列,c(1,2)代表行和列;例如 apply(data,MARGIN=1,max)
当 x 为 data.frame 时,1 仍然代表行,2 仍然代表列。
当 x 为数组 array 时,1 仍然代表行,2 仍然代表列,其它更高维数用相应的编号数字来表示,如 3 就可以代表 array 的页。
其它详细情况参考 apply 函数
min(x): 返回 x 中最小的元素,同 max
rev(x) 翻转 x 中的所有元素
sort(x) 升序排列 x 中的元素;降序排列使用 rev(sort(x)), 要得到排列的小标用 order()
choose(n,k) 组合数计算
which() 返回满足条件的下表
sample(x,size) 不放回的随机在向量 x 中抽取 size 个元素选项,replace+TRUE 允许放回抽样
rank(): 计算向量的秩
range(x): 返回 c(min(x),max(x))
sum(x):x 中各元素的加和
diff(x): 向量 x 的差分
prod(x):x 中元素的连乘积
mean(x):x 的均值
median(x):x 的中位数
quantile(x,probs=): 满足给定概率的样本分位数(默认为 0,0.25,0.75,1)
weight.mean(x,w): 加权平均,w 即为 weight, 即权值。
rank(x):x 中元素的秩
var(x): 向量 x 的样本方差;如果 x 是矩阵或数据框,协方差矩阵将被计算
cor(x): 如果 x 是矩阵或数据框,相关系数矩阵将被计算
sd(x):x 的标准差;sd(x)=sqrt(var(x))
var(x,y) or cov(x,y):x 和 y 间的协方差;如果 x,y 为矩阵或数据框,返回 x 和 y 各列的协方差
cor(x,y):x 和 y 的线性相关系数;或者相关矩阵,如果 x 和 y 为矩阵或者数据框
round(x,n):x 的约数,精确到 n 位
log(x,base): 计算 x 以 base 为基的对数,默认基为 exp(1)
scale(x): 如果 x 是一个矩阵,则中心化和标准化数据;若只标准化数据,则使用选项 center=FALSE,若只 中心化使用 scale=FALSE(默认 center=TRUE,
scale=TRUE)
pmin(x,y,…):x[i],y[i]相比较小者,组成新的向量
pmax(x,y,…):x[i],y[i]相比较大者,组成新的向量
Re(x): 复数的实部
Im(x): 复数的虚部
abs(x): 绝对值
Arg(x): 复数角度(in radians)
Conj(x): 共轭复数
fft(x): 数组 x 的快速傅里叶变换
mvfft(x): 矩阵 x 的每一列的傅里叶变换
factorial():计算 n!
cumsum():cumulative sums
cumprod():cumulative products
D(expression(exp(x^2)),”x”):求导
integrate(function(x) x^2,0,1):积分
注意:大多数数学函数使用逻辑参数 na.rm=FALSE 来指定是否移除缺失值(NA)
4.3.R 字符操作
paste(…): 转化为字符后连接向量;seq= 为分割界限(一个空格为默认);选择 collapse= 可以分 割 ”collapse” 结果
substr(x,start,stop): 提取字符向量的子字段;同样可以赋值,使用 substr(x,start,stop)<-value
strsplit(x,split): 在 split 的位置分割 x, 例如:
x<-strsplit(“An R matrix corresponds to the mathematical concept”,” “);
length(x[1]); #注意:对象被存放在列表 x 的第一项中,可以用 x[1]提取
grep(pattern,x): 搜索 x 中满足 pattern 条件;参见?regex
gsub(pattern,replacement,x): 替换满足正则表达式的字段,sub()类似,但只替换第一个出现的字段
tolower(x): 转化为 lowercase
toupper(x): 转化为 uppercase
match(x,table):table 中匹配 x 元素位置组成的向量
x%in%table:table 中匹配 x 元素位置组成的向量, 返回值为逻辑值
pmatch(x,table):table 中部分匹配 x 元素
nchar(x): 字符的个数