R语言基本操作函数(1)变量的基本操作

23次阅读
没有评论

共计 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): 字符的个数

正文完
 0